【问题标题】:How to tell curl to NOT overwrite如何告诉 curl 不要覆盖
【发布时间】:2012-12-11 05:57:49
【问题描述】:

我正在使用以下命令:

$ xargs -n 1 curl -o -O < ../completeresultlist.txt

../completeresultlist.txt 是我要下载的文件列表所在的位置。但是,其中一些文件虽然来自某个地方的不同目录,但具有相同的名称。我想获取列表中的所有文件,那么如何避免覆盖?当它发现重复时,似乎 curl 只是覆盖。

【问题讨论】:

  • 您可以使用 wget 代替。默认情况下它会重命名副本。

标签: curl xargs


【解决方案1】:

很遗憾,我不相信此功能受支持,但它在 to-do list 上。另一种选择是使用wget,它具有support,用于不覆盖文件。

【讨论】:

  • 嗯,看起来 wget 默认会这样做。我正在查看抑制此覆盖的 -nc 选项。
  • wget 运行良好。不完全是如何让 curl 做到这一点的答案,但我相信它会帮助寻找答案的人。像'file'、'file.1'等重写
【解决方案2】:

我认为下面的脚本应该这样做:

while read url; do
  if [ ! -e $(basename "$url") ]
  then curl -O "$url"
  else echo "Skipping $url because file already exists" # Leave out if you want silence
  fi
done < ../completeresultlist.txt

【讨论】:

  • 如果我做错了,请原谅我,但我只是将它粘贴到终端中,看起来它正在下载文件,但我所在目录中唯一的东西是一个名为'-O'
  • 去掉-o 选项,应该可以解决它。我从问题中的原始命令中获取了它,我认为这部分工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2013-12-28
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多