Предыдущие ответы не будут работать при перенаправлениях.Например, если кому-то нужен размер iso DVD Debian, он должен использовать опцию --location, в противном случае сообщаемый размер может быть размером тела ответа 302 Moved Temporarily
, а не реального файла.
Предположим,у вас есть следующий URL:
$ url=http://cdimage.debian.org/debian-cd/8.1.0/amd64/iso-dvd/debian-8.1.0-amd64-DVD-1.iso
С помощью curl вы можете получить:
$ curl --head --location ${url}
HTTP/1.0 302 Moved Temporarily
...
Content-Type: text/html; charset=iso-8859-1
...
HTTP/1.0 200 OK
...
Content-Length: 3994091520
...
Content-Type: application/x-iso9660-image
...
Вот почему я предпочитаю использовать HEAD
, который является псевдонимом для команды lwp-request
из пакета libwww-perl (в Debian).Еще одно преимущество, которое он имеет, заключается в том, что он удаляет лишние \ r символов, что облегчает последующую обработку строк.
Таким образом, чтобы получить размер ISO-DVD Debian, можно сделать, например:
$ size=$(HEAD ${url})
$ size=${size##*Content-Length: }
$ size=${size%%[[:space:]]*}
Обратите внимание, что:
- этот метод потребует запуска только одного процесса
- , он будет работать только с bash, поскольку используется специальный синтаксис расширения
Для других оболочек вам, возможно, придется прибегнуть к sed, awk, grep и др ..