You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅用Curl实现文件已存在时返回错误而非覆盖?

仅用curl实现文件存在时返回错误而非覆盖

嘿,这个需求其实是可以实现的,不过要分curl版本来看:

1. 推荐方案:用--no-clobber选项(curl 7.83.0及以上)

从curl 7.83.0版本开始,官方专门添加了--no-clobber(短选项是-nc)参数来解决“避免覆盖已存在文件”的问题。只要在命令里加上这个参数,当本地目标文件已经存在时,curl会直接终止并返回错误,绝对不会覆盖原文件。

举个实际的命令例子:

curl --no-clobber https://your-target-url/file -o file

如果本地已经有file这个文件,curl会输出类似这样的错误提示:

curl: (23) Failed writing output to destination

同时返回非零的退出码,完全符合你想要的“返回错误提示而非覆盖”的要求。

2. 旧版本curl的替代方案(7.83.0以下)

如果你的curl版本比较旧,没有--no-clobber选项,也可以通过间接的方式实现类似效果——利用curl的时间条件选项-z配合--fail,强制curl在文件存在时拒绝下载并返回错误:

命令示例:

curl --fail -z "@99991231235959" https://your-target-url/file -o file

原理说明:

  • @99991231235959是一个远未来的时间戳,curl会检查远程文件的修改时间是否晚于这个时间(显然不可能)。
  • 根据-z选项的规则,只有当本地文件不存在时,curl才会执行下载;如果本地文件已存在,curl会判定“无需更新”,加上--fail选项后就会返回非零退出码并抛出错误。

这个方法虽然不是专门为“避免覆盖”设计的,但能达到你要的核心效果:文件存在时不覆盖,且返回错误提示。

内容的提问来源于stack exchange,提问作者Armand Grillet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:08:29