Rsync
rsync 遞歸地複制匹配模式的子目錄下游的文件
我是 rsync 的新手,並且有一個相當深的目錄,看起來像這樣:
source | +--foo | | | +--bar1 | | | | | +--bla (more dirs down the line) | +--bar2 | | | | | +--... | +--bar3 | | | +--bla (more dirs down the line) ...
現在,我想遍歷/搜尋完整路徑並遞歸複製位於 bla 目錄內部/之後的所有 csv 文件(即在 bla 的所有子目錄中)。在這裡閱讀了一些文件和文章後,我認為類似於
rsync -ravm --include='/**/bla/' --include='*.csv' --exclude='*' source/ .
應該可以解決問題,但是無論我嘗試使用包含和排除的任何組合,它要麼從任何地方複製所有 CSV,要麼什麼都不複製。
我在這裡沒有看到什麼?任何幫助是極大的讚賞。
我在 bash 4.3.48 和 rsync 3.1.1 上。
這似乎可以解決問題:
rsync -avm --include='*/' --include='foo/*/bla/**.csv' --exclude='*' source/ .
或者
rsync -avm --include={'*/','foo/*/bla/**.csv'} --exclude='*' source/ .
--exclude='*'
排除所有文件--include='*/'
包含目錄--include='foo/*/bla/**.csv'``bla
在目錄中或目錄 下包含 *.csv 文件(如果始終位於目錄下,則相對
--include='bla/**.csv'
也可以使用)bla``foo/barX
我刪除了選項
-r
,因為它已經包含在-a
. 並且選項-m
會刪除我們可能找到的所有空目錄。