我有一個關於「cp」命令的問題: 我必須將文件夾複製到一個目錄。對我來說有兩種不同的情況。在第一種情況下具有相同名稱的文件夾不存在。到目前爲止,這很簡單:bash:用cp完全替換一個文件夾
ls test/folder1/
file1 file2
ls test/destination/
cp -r -v test/folder1/ test/destination/
»test/folder1/「 -> »test/destination/folder1「
»test/folder1/file1「 -> »test/destination/folder1/file1「
»test/folder1/file2「 -> »test/destination/folder1/file2「
在第二種情況下存在一個具有相同名稱的文件夾。這些文件具有與源文件夾中不同的名稱。我真正想要的是,目標目錄中的文件夾將被源文件夾完全替換(如果具有相同名稱的文件存在,則應該重寫;如果源目錄中不存在文件,則應刪除它們)。
ls test/folder1/
file1 file2
ls test/destination/
folder1
ls test/destination/folder1/
file3 file4
cp -r -v test/folder1/ test/destination/
»test/folder1/file1「 -> »test/destination/folder1/file1「
»test/folder1/file2「 -> »test/destination/folder1/file2「
ls test/destination/folder1/
file1 file2 file3 file4
它很可能是可能的類似
if [ -d destination/$foldername ]
then
rm -r /destination/$foldername
cp-r -v test/$foldername/ test/destination/$foldername
else
cp-r -v test/$foldername/ test/destination/$foldername
fi
,但我不知道是否有更好的解決了這一點。
已經謝謝了!
我認爲這是最好的。沒有更好的方案 – HuStmpHrrr 2014-08-27 13:53:40
如果你不關心它,沒有必要先測試目的地。只需使用'rm -rf'test/destination/$ foldername「'然後'cp'。 – 2014-08-27 13:58:51
@HuStmpHrrr,7行解決方案絕不比2行更好(無條件運行'rm -rf',擺脫'if')。 – 2014-08-27 15:01:15