Cp
如何使用cp以冪等方式遞歸複製文件夾?
當我使用
cp -R inputFolder outputFolder
結果取決於上下文:
- 如果
outputFolder
不存在,則創建,複製的文件夾路徑為outputFolder
.- 如果
outputFolder
存在,則創建的複製將是outputFolder/inputFolder
這太可怕了,因為我想創建一些安裝腳本,如果使用者錯誤地執行了兩次,他將
outputFolder
第一次創建,然後在第二次執行時,所有的東西都會在outputFolder/inputFolder
.
- 我總是想要第一個行為:在原件旁邊創建一個複製(作為兄弟)。
- 我想用來
cp
便攜(例如MINGW沒有rsync
發貨)- 我檢查
cp -R --parents
過,但這會在目錄樹上重新創建路徑(所以複製不會是outputFolder
butsome/path/outputFolder
)--remove-destination
或者--update
如果 2 沒有改變任何東西,仍然會被複製到outputFolder/inputFolder
有沒有辦法在不首先檢查是否存在
outputFolder
(如果文件夾不存在則……)或使用的情況下做到這一點rm -rf outputFolder
?達成共識的可移植 UNIX 方式是什麼?
改用這個:
cp -R inputFolder/. outputFolder
這與工作方式完全相同
cp -R aaa/bbb ccc
:如果ccc
不存在,則將其創建為bbb
及其內容的副本;但如果ccc
已經存在,則創建為其及其內容ccc/bbb
的副本。bbb
對於幾乎任何
bbb
這種情況,都會產生您在問題中提到的不良行為。但是,在這種特定情況下,bbb
is just.
, soaaa/bbb
is reallyaaa/.
,這反過來又是真的只是,aaa
但有另一個名字。所以我們有這兩種情況:
ccc
不存在:該命令的
cp -R aaa/. ccc
意思是“創建ccc
並複制aaa/.
into的內容ccc/.
,即復製aaa
到ccc
. 2.ccc
確實存在:該命令的
cp -R aaa/. ccc
意思是“複製aaa/.
into的內容ccc/.
,即復製aaa
到ccc
.