我如何才能rsync从不同的子文件中包含文件名中的特定string的文件?

我有一个子树的树,其中一些包含一个名为“模板”一词的文件。 我想rsync他们到不同的位置相同的subdir树。

例如:来源:

curfolder/dir1/dir2/blah_template.ext curfolder/dir3/dir4/foo_template.blah 

预期目的地:

 destfolder/dir1/dir2/blah_template.ext destfolder/dir3/dir4/foo_template.blah 

这个命令不起作用; 它将所有文件放在基本目标文件夹中,而不是放在正确的子目录中:

 rsync -av curfolder/*/*/*template* destfolder 

所以我想我需要一个像这样的filter,但这不起作用(它似乎只是同步一切):

 rsync -av -f"+ *template*" curfolder destfolder 

一种方式来做到这一点:

 rsync -av --include "*/" --include="*_template*" --exclude="*" --prune-empty-dirs curfolder/ destfolder/ 

rsync的人

它用什么语言来expression:

  1. 包括每个文件夹
  2. 包括匹配_template的所有东西
  3. 排除一切
  4. 删除空文件夹

这两个包含优先于排除,所以排除只匹配包含不匹配的所有内容。