如果我输入 wget "no such address" -o "test.html",它会先创建 test.html,如果失败,则将其留空。但是,如果不使用 -o,它会等待下载是否成功,然后才会写入文件。
我希望后一种行为也适用于 -o,可以吗?
答案1
wget
当找不到 URL 时返回非零退出状态,因此您可以在失败时附加删除命令:
wget "url" -O file || rm -f file
或者创建一个临时文件,并在成功后才将其移动到您想要的位置:
wget "url" -O /tmp/wget && mv /tmp/wget file
第二种方法的好处是在失败时不会删除现有文件,但是man tempfile
如果您并行运行多个实例,请务必使用唯一的临时名称(请参阅)。
答案2
正如评论中所写,wget -O
更像是 shell 重定向无论是否有错误,它总是写入文件。
你可以使用curl -f
:
curl -f http://nonexistent/file.jpg -o localfile.jpg
如果获取文件时出现错误,它将不会触及本地文件。
答案3
正确的语法是
wget "url" -O file
注意大写的 O。-o 选项告诉 wget 写入日志文件,这就是为什么即使失败也总是写它。
答案4
根据帮助文档(wget -h),您可以使用--spider选项跳过下载(版本1.14)。
Download:
-S, --server-response print server response.
--spider don't download anything.