wget -o 失败时写入空文件

wget -o 失败时写入空文件

如果我输入 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.

相关内容