Как получить общий размер загрузки списка?

Представьте, что у меня есть 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 также оценены)

1
задан 29 May 2018 в 06:20

6 ответов

я бы предложил использовать [Ф3]:

[Ф1]

и [F4] и будет печатать информацию заголовка (какой файл?) как, как показано ниже, который содержит [ф5] в байтах (если удаленный сервер может обеспечить); затем с [ф6] мы подведение итогов второго столбца которых является Размер файла строки если сочетается с [ф7] и в конце печати Общий размер сохраняется в [ф8] переменной.

[Ф2]

от какой файл?

-я, - голову (файл по HTTP/FTP или) получения http-Заголовок только! Протокол http-серверы имеют команду руководителя, который это использует, чтобы получить ничего, кроме заголовка документа. При использовании на FTP или файл, завиток отображает Размер файла и время модификации. -ы, - тихо беззвучный или тихий режим. Не показывать индикатор прогресса и сообщения об ошибках. Делает завиток немой. Все еще будет выводить данные вы просите, возможно, даже к терминалу/stdout, если только не перенаправить его.
6
ответ дан 8 June 2018 в 14:00
  • 1
    конечно, и я добавил это в свой ответ. – αғsнιη 24 May 2018 в 03:43
  • 2
    Вы можете заменить [Ф1] и [Ф2] и убрать [Ф3] на следующей строке. – Chai T. Rex 29 May 2018 в 06:48
  • 3
    Я редактировал, пока мне не нравятся конвейеры и многое другое, если это было в конце в одиночку:) – αғsнιη 29 May 2018 в 07:56

Я бы предложил использовать 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, если вы не перенаправите его.
6
ответ дан 17 July 2018 в 13:37

Я бы предложил использовать 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, если вы не перенаправите его.
5
ответ дан 20 July 2018 в 13:42

от обмена стека такой ответ:

Вы можете использовать [F3] для получения размера файлов в интернете без скачивания (при условии, что веб-сервер поставляет эту информацию.) Методика подробно обмен стека.

теперь пройдемся по списку, чтобы получить Размер каждого файла:

[Ф1]

для получения списка размеров.

редактировать: конечно, Вы можете использовать клавиши [F4], чтобы сумма размеров:

[Ф2]
-1
ответ дан 8 June 2018 в 14:00
  • 1
    Помимо включения ненужного grep, как это отличается от принятого ответа? – muru 24 May 2018 в 04:37
  • 2
    @Муру - Читабельность. Некоторые люди предпочитают разные методы. Вот почему компания продает 6 разных видов суши. – WinEunuuchs2Unix 24 May 2018 в 04:43
  • 3
    Если это все, то такой тривиальный вариант должен быть комментарием или редактированием. – muru 24 May 2018 в 04:45
  • 4
    Даже если я не согласен с чьим-то стилем, мне неудобно редактировать его, чтобы навязать другой стиль. Завтра я удалю ответ, если демократия согласится с вами, и есть больше голосов. В его нынешнем виде я считаю, что ответ Stack Exchange более читабельен и думает, что другие будут относиться к его стилю. Что касается преобразования ответа Stack Exchange на комментарий, форматирование блока кода становится уродливым, а отсутствие новых абзацев в комментариях бросает вызов одному пробелу. Если вы хотите опубликовать комментарий со ссылкой на ответ SE, который уменьшит экспозицию. – WinEunuuchs2Unix 24 May 2018 в 04:59
  • 5
    Я имел в виду опубликовать такой комментарий: «Из этот ответ SE : cat files.lst | xargs -n 1 -I {} curl -sI {} | grep Content-Length | awk '{ sum+=$2 } END { print sum}'» Это все, что необходимо, так как основная часть этого ответа совершенно не нужна, поскольку скрывает объяснения позади другой ссылки, тогда как другой ответ здесь уже включает объяснение. – muru 24 May 2018 в 05:05

От 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}'
-1
ответ дан 17 July 2018 в 13:37

От 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}'
-1
ответ дан 20 July 2018 в 13:42
  • 1
    Помимо включения ненужного grep, как это отличается от принятого ответа? – muru 24 May 2018 в 04:37
  • 2
    @muru - читаемость. Некоторые люди предпочитают разные методы. Именно поэтому Safeway продает 6 разных видов суши. – WinEunuuchs2Unix 24 May 2018 в 04:43
  • 3
    Если это все, то такой тривиальный вариант должен быть комментарием или редактированием. – muru 24 May 2018 в 04:45
  • 4
    Даже если я не согласен с чьим-то стилем, мне неудобно редактировать его, чтобы навязать другой стиль. Завтра я удалю ответ, если демократия согласится с вами, и есть больше голосов. В его нынешнем виде я считаю, что ответ Stack Exchange более читабельен и думает, что другие будут относиться к его стилю. Что касается преобразования ответа Stack Exchange на комментарий, форматирование блока кода становится уродливым, а отсутствие новых абзацев в комментариях бросает вызов одному пробелу. Если вы хотите опубликовать комментарий со ссылкой на ответ SE, который уменьшит экспозицию. – WinEunuuchs2Unix 24 May 2018 в 04:59
  • 5
    Я имел в виду опубликовать такой комментарий: «Из этот ответ SE : cat files.lst | xargs -n 1 -I {} curl -sI {} | grep Content-Length | awk '{ sum+=$2 } END { print sum}'» Это все, что необходимо, так как основная часть этого ответа совершенно не нужна, поскольку скрывает объяснения позади другой ссылки, тогда как другой ответ здесь уже включает объяснение. – muru 24 May 2018 в 05:05

Другие вопросы по тегам:

Похожие вопросы: