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
更新和不重寫是不同的。