with - linux shell script cp command




Linux如何復制但不能覆蓋? (4)

我想要一個目錄,但我不想覆蓋任何現有的文件,即使它們比複製的文件早。 我希望完全不具有互動性,因為它將成為Crontab Bash腳本的一部分。 有任何想法嗎?


高山linux:下面的答案只適用於單個文件的情況:在高山cp -n不工作(和false | cp -i ...太)所以解決方案在我的情況下工作,我發現是:

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

在上面的例子中,我們檢查env.js文件是否存在,如果沒有,我們將env.example.js複製為env.js


對於那些沒有'n'選項的人(像RedHat上的我),你可以使用cp -u只在源文件比現有文件更新(或者沒有現有文件)時寫入文件。 。

正如在評論中提到的那樣,這將覆蓋較舊的文件,所以不是OP想要的。 使用ceving的答案。


考慮使用rsync

rsync -a -v src dst

但是,如果不同,這將更新文件。

根據評論

rsync -a -v --ignore-existing src dst

將完全忽略現有文件。


這將在RedHat上運行:

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

更新不重寫是不同的。







cp