Rsync

rsync 遞歸地複制匹配模式的子目錄下游的文件

  • October 7, 2020

我是 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會刪除我們可能找到的所有空目錄。

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