Rsync
rsync 僅在具有固定最大深度的子目錄中的特定文件類型
我想在一個子目錄中同步所有 *.sh 文件。我嘗試了這個 cmd,但是目錄中的所有文件都是同步的,而不僅僅是特定的文件類型。
rsync -vr -n --include="*.sh" --exclude="*/*/" --prune-empty-dirs /source /target
我還嘗試添加一個過濾器,例如
--filter="+ *.sh"
但這並沒有改變結果。另一個過濾器
rsync -vr -n --include="*.sh" --filter="-! *.sh" --exclude="*/*/" --prune-empty-dirs
給了我一個空列表。如果我排除“”,我也排除“.sh”……有什麼問題?謝謝!
深度應該是一 - 子目錄的名稱是未知的。例如,
home/subdirectory1/subsubdirectory/subsubsubdirectory/file.sh home/subdirectory1/file1.sh home/subdirectory2/file2.sh home/subdirectory3/file
在上面的範例
rsync
中,應該從 home 開始,同步目錄層次結構,並且只有文件file1.sh
和file2.sh
您的範例似乎與您的描述不符。我想你說你想要的是這個,
- 匹配
*.sh
緊接在您的下方的未知子目錄中的所有文件/home
- 將文件放在目標上的未知子目錄中
- 不要包含
/home
在目標路徑中從 看
/home
,此命令將匹配所有文件*/*.sh
並將它們及其部分路徑複製到目標。--dry-run
(如果您對預期結果感到滿意,請刪除。)rsync --dry-run -avR /home/./*/*.sh /target
例如,
/home/subdir/file.sh
將復製到/target/subdir/file.sh