Shell-Script

在另一個文件夾中創建相同的子文件夾,並複制具有特定名稱的文件

  • November 19, 2020

我有一個目錄,其中包含許多子文件夾,並且在子文件夾下還有其他子文件夾。我想將所有目錄和子目錄複製到另一個位置,只複製這些目錄中具有特定名稱的文件(同時保留層次結構)。

比方說,複製所有目錄和子目錄,然後如果這些目錄有帶.txt副檔名的文件,也複製它們。

在 Unix/Linux 系統上執行此操作的最佳方法是什麼?

使用rsync

rsync -a --include='*/' --include='*.txt' --exclude='*' source_dir/ target_dir

這應該創建source_dir目錄層次結構的副本target_dir,其中名稱匹配的文件被*.txt複製(僅)。

--include--exclude選項以從左到右的方式處理,第一個匹配名稱“獲勝”的模式。此處使用這些選項的方式可確保處理所有目錄以及任何名稱匹配*.txt,但忽略其他所有內容。

( ) 選項可確保遞歸處理層次結構,並在副本中保留盡可能多的文件元數據(有關詳細資訊,請參閱-a手冊)。--archive``source_dir``rsync

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