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