Получить размер файла для wget перед тем, как это сделать?
Мне интересно, есть ли способ заранее проверить размер файла, который я могу скачать через wget
? Я знаю, что с помощью --spider
опция говорит мне, существует ли файл или нет, но я также заинтересован в поиске размера этого файла.
4 ответа
Хм.. для меня --spider
отображает размер:
$ wget --spider http://henning.makholm.net/
Spider mode enabled. Check if remote file exists.
--2011-08-08 19:39:48-- http://henning.makholm.net/
Resolving henning.makholm.net (henning.makholm.net)... 85.81.19.235
Connecting to henning.makholm.net (henning.makholm.net)|85.81.19.235|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9535 (9.3K) [text/html] <-------------------------
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.
$
(Но имейте в виду, что не все веб-серверы будут информировать клиентов о длине данных, за исключением случаев, когда соединение закрывается, когда все это отправлено.)
Если вас беспокоит изменение wget формата, в котором указывается длина, вы можете использовать wget --spider --server-response
и искать Content-Length
заголовок в выводе.
curl --head URL
Ищите "Content-Length:" в выходных данных.
И благодаря комментарию Хеннинга Махолма:
wget --spider URL
и ищите "Длина:" в выходных данных.
Это должно работать:
size_bytes=$(wget -S "${url}" --start-pos=500G 2>&1 | grep Content-Length | cut -d: -f2)
На самом деле я искал размер каталога, и Google привел меня сюда. Хотя здесь нет прямого ответа, принятый ответ помог мне создать поверх него следующую команду:
wget --spider -m -np URL-to-dir 2>&1 | sed -n -e /unspecified/d -e '/^Length: /{s///;s/ .*//;p}' | paste -s -d+ | bc
Вышеуказанные прогоны
wget
в режиме паука для всего каталога, в результате чего регистрируется длина каждого файла в этом каталоге. Затем вывод направляется в
sed
для извлечения последовательности чисел (размеров в байтах). Последние два компонента в конвейере просто помогают суммировать его, чтобы получить общее количество в байтах.