Представьте, что у меня есть download-list.txt. Он содержит некоторые URL-адреса файлов:
http://example.com/a.txt
http://example.com/b.txt
http://example.com/c.txt
http://example.com/d.txt
http://example.com/e.txt
Когда я запускаю wget -i download-list.txt --spider, он показывает:
http://example.com/a.txt
...
Length: 128 (128B) [text/txt]
...
http://example.com/b.txt
...
Length: 120 (120B) [text/txt]
...
http://example.com/c.txt
...
Length: 100 (100B) [text/txt]
...
http://example.com/d.txt
...
Length: 90 (90B) [text/txt]
...
http://example.com/e.txt
...
Length: 80 (80B) [text/txt]
...
Но мне не нужен отдельный размер файла, мне нужно всего размер файла:
518 (128+120+100+90+80)
Как достичь этого результата? (Любые другие методы без wget также оценены)
я бы предложил использовать [Ф3]:
[Ф1]и [F4] и будет печатать информацию заголовка (какой файл?) как, как показано ниже, который содержит [ф5] в байтах (если удаленный сервер может обеспечить); затем с [ф6] мы подведение итогов второго столбца которых является Размер файла строки если сочетается с [ф7] и в конце печати Общий размер сохраняется в [ф8] переменной.
[Ф2]от какой файл?
-я, - голову (файл по HTTP/FTP или) получения http-Заголовок только! Протокол http-серверы имеют команду руководителя, который это использует, чтобы получить ничего, кроме заголовка документа. При использовании на FTP или файл, завиток отображает Размер файла и время модификации. -ы, - тихо беззвучный или тихий режим. Не показывать индикатор прогресса и сообщения об ошибках. Делает завиток немой. Все еще будет выводить данные вы просите, возможно, даже к терминалу/stdout, если только не перенаправить его.Я бы предложил использовать curl:
<download-list.txt xargs -n1 curl -sI |
awk '/[cC]ontent-[lL]ength/{total_size+=$2} END{ print total_size " bytes" }'
curl будет печатать информацию заголовка (какой файл?), как показано ниже, который содержит "Content-Length" в байтах (если удаленный сервер может обеспечить это); то с awk мы суммируем второй столбец, который является размером файла для строки, если он совпадает с Content-Length, а при END печатает общий размер, сохраненный в переменной total_size.
HTTP/1.1 200 OK Content-Length: 1921843200 Content-Type: application/x-iso9660-image ETag: "728d0000-56ac4c63786e2" Server: Apache/2.4.18 (Ubuntu) Last-Modified: Thu, 26 Apr 2018 18:44:15 GMT Connection: keep-alive Date: Wed, 23 May 2018 16:45:08 GMT-I, --head (HTTP / FTP / FILE) Только HTTP-заголовок! HTTP-серверы имеют команду HEAD, которая используется для получения ничего, кроме заголовка документа. При использовании в файле FTP или FILE завиток отображает только размер файла и время последней модификации. -s, --silent Тихий или спокойный режим. Не показывать индикаторы выполнения или сообщения об ошибках. Делает скручивание немым. Он по-прежнему будет выводить данные, которые вы запрашиваете, потенциально даже на терминал / stdout, если вы не перенаправите его.
Я бы предложил использовать curl:
<download-list.txt xargs -n1 curl -sI |
awk '/[cC]ontent-[lL]ength/{total_size+=$2} END{ print total_size " bytes" }'
curl будет печатать информацию заголовка (какой файл?), как показано ниже, который содержит "Content-Length" в байтах (если удаленный сервер может обеспечить это); то с awk мы суммируем второй столбец, который является размером файла для строки, если он совпадает с Content-Length, а при END печатает общий размер, сохраненный в переменной total_size.
HTTP/1.1 200 OK Content-Length: 1921843200 Content-Type: application/x-iso9660-image ETag: "728d0000-56ac4c63786e2" Server: Apache/2.4.18 (Ubuntu) Last-Modified: Thu, 26 Apr 2018 18:44:15 GMT Connection: keep-alive Date: Wed, 23 May 2018 16:45:08 GMT-I, --head (HTTP / FTP / FILE) Только HTTP-заголовок! HTTP-серверы имеют команду HEAD, которая используется для получения ничего, кроме заголовка документа. При использовании в файле FTP или FILE завиток отображает только размер файла и время последней модификации. -s, --silent Тихий или спокойный режим. Не показывать индикаторы выполнения или сообщения об ошибках. Делает скручивание немым. Он по-прежнему будет выводить данные, которые вы запрашиваете, потенциально даже на терминал / stdout, если вы не перенаправите его.
от обмена стека такой ответ:
Вы можете использовать [F3] для получения размера файлов в интернете без скачивания (при условии, что веб-сервер поставляет эту информацию.) Методика подробно обмен стека.
теперь пройдемся по списку, чтобы получить Размер каждого файла:
[Ф1]для получения списка размеров.
редактировать: конечно, Вы можете использовать клавиши [F4], чтобы сумма размеров:
[Ф2]От Stack Exchange этот ответ:
Вы можете использовать curl, чтобы получить размер файла в Интернете, не загружая его (при условии, что веб-сервер предоставит эту информацию.) Этот метод подробно описан Stack Exchange .
Теперь перебираем список, чтобы получить размер каждого файла:
cat files.lst | xargs -n 1 -I {} curl -sI {} | grep Content-Length | awk '{print $2}'
, чтобы получить список размеров.
]EDIT: вы можете, конечно, использовать awk, чтобы суммировать размеры:
awk '{ sum+=$2 } END { print sum}'
От Stack Exchange этот ответ:
Вы можете использовать curl, чтобы получить размер файла в Интернете, не загружая его (при условии, что веб-сервер предоставит эту информацию.) Этот метод подробно описан Stack Exchange .
Теперь перебираем список, чтобы получить размер каждого файла:
cat files.lst | xargs -n 1 -I {} curl -sI {} | grep Content-Length | awk '{print $2}'
, чтобы получить список размеров.
]EDIT: вы можете, конечно, использовать awk, чтобы суммировать размеры:
awk '{ sum+=$2 } END { print sum}'