如何获取列表的总下载大小?

如何获取列表的总下载大小?

想象一下,我得到了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

我建议使用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,并在结束时打印保存在total_size变量中的总大小。

HTTP/1.1 200 正常
内容长度:1921843200
内容类型:application/x-iso9660-image
ETag:“728d0000-56ac4c63786e2”
服务器:Apache/2.4.18(Ubuntu)
最后修改时间:2018 年 4 月 26 日星期四 18:44:15 GMT
连接:保持连接
日期:2018 年 5 月 23 日星期三 16:45:08 GMT

man curl

-I,--head
(HTTP/FTP/FILE)仅获取 HTTP 标头!HTTP 服务器具有 HEAD 命令,该命令仅用于获取文档的标头。当用于 FTP 或 FILE 文件时,curl 仅显示文件大小和上次修改时间。

-s、--silent
静默或安静模式。不显示进度表或错误消息。使 Curl 静音。它仍将输出您要求的数据,甚至可能输出到终端/标准输出,除非您重定向它。

相关内容