1

使用 shell 中的 curl,丢弃(或检测)由于发生超时而未完全下载的文件的最佳方法是什么?我想做的是:

curl -m 2 --compress -o "dest/#1" "http://url/{$list}"

发生超时时,日志会显示它,并且下载的文件部分会保存到磁盘:

[4/13]: http://URL/123.jpg --> dest/123.jpg
 99 97984   99 97189    0     0  45469      0  0:00:02  0:00:02 --:--:-- 62500
curl: (28) Operation timed out after 2000 milliseconds with 97189 bytes received

我正在尝试删除未 100% 下载的文件,或者将它们列出以尝试恢复(-C 标志),稍后。

4

1 回答 1

1

到目前为止,我发现的最佳解决方案是捕获 curl 调用的 stderr,并使用 perl 和 grep 的组合对其进行解析以获取输出文件名:

curl -m 2 -o "dest/#1" "http://url/{$list}" 2>curl.out
perl -pe 's/[\t\n ]+/ /g ; s/--> /\n/g' curl.out | grep -i "Curl: (28)" | perl -pe 's/ .*//g'
于 2013-04-03T22:54:23.213 回答