Shell-Script
在另一個文件夾中創建相同的子文件夾,並複制具有特定名稱的文件
我有一個目錄,其中包含許多子文件夾,並且在子文件夾下還有其他子文件夾。我想將所有目錄和子目錄複製到另一個位置,只複製這些目錄中具有特定名稱的文件(同時保留層次結構)。
比方說,複製所有目錄和子目錄,然後如果這些目錄有帶
.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