我想cp一个目录,但我不想覆盖任何现有的文件,即使它们比复制的文件更老。我希望它完全非交互式,因为这将是Crontab Bash脚本的一部分。什么好主意吗?


当前回答

这对我很有用 是n | cp -i SRC dest

其他回答

这对我很有用 是n | cp -i SRC dest

cp -n

是你想要的。请参阅手册页。

这将在RedHat工作:

false | cp -i source destination 2>/dev/null

更新和不覆盖是另一回事。

某些版本的cp没有——no-clobber选项。在这种情况下:

  echo n | cp -vipr src/* dst

Alpine linux:下面的答案只适用于单个文件的情况:在Alpine cp -n不工作(和错误| cp -i…所以解决方案在我的情况下,我发现是:

if [ ! -f env.js ]; then cp env.example.js env.js; fi 

在上面的例子中,如果env.js文件不存在,那么我们将env.example.js复制到env.js。