从shell卷曲:如果传输超时,则丢弃输出文件

时间:2013-04-03 14:10:58

标签: shell curl

使用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标志)。

1 个答案:

答案 0 :(得分: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'