想象一下,我得到了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
-I,--head
(HTTP/FTP/FILE)仅获取 HTTP 标头!HTTP 服务器具有 HEAD 命令,该命令仅用于获取文档的标头。当用于 FTP 或 FILE 文件时,curl 仅显示文件大小和上次修改时间。-s、--silent
静默或安静模式。不显示进度表或错误消息。使 Curl 静音。它仍将输出您要求的数据,甚至可能输出到终端/标准输出,除非您重定向它。