Ubuntu

如何複製合併兩個目錄?

  • April 12, 2022

我在 Linux 中有兩個具有這種結構的目錄 images 和 images2:

/images/ad  
/images/fe  
/images/foo  

…和其他 4000 個文件夾

另一個是:

/images2/ad  
/images2/fe  
/images2/foo

…和其他 4000 個文件夾

這些文件夾中的每一個都包含圖像,並且 images 和 images2 下的目錄名稱完全相同,但它們的內容不同。然後我想知道如何將 /images2/ad 的圖像複製合併到 images/ad 中,將 /images2/foo 的圖像複製合併到 images/foo 等所有 4000 個文件夾中。

這是rsync的工作。除非您想移動文件而不是複制它們,否則使用 shell 循環手動執行此操作沒有任何好處。

rsync -a /path/to/source/ /path/to/destination

在你的情況下:

rsync -a /images2/ /images/

(注意尾部斜線images2,否則它會復製到/images/images2。)

如果兩個目錄中都存在同名的圖片,上面的命令會/images/SOMEPATH/SOMEFILE/images2/SOMEPATH/SOMEFILE. 如果您只想替換舊文件,請添加選項-u. 如果您想始終保留該版本/images,請添加該選項--ignore-existing

如果你想從/images2rsync 移動文件,你可以通過選項--remove-source-files. 然後 rsync 依次複製所有文件,並在完成後刪除每個文件。如果源目錄和目標目錄在同一個文件系統上,這比移動要慢得多。

引用自:https://unix.stackexchange.com/questions/149965