现在我成功运行了:
rsync -uvma --include="*/" --include="*.css" --exclude="*" $spec_dir $css_spec_dir
在shell脚本中,它将源目录中的所有文件(即.css文件)复制到目标目录中。
我想对HTML文件执行相同操作,但仅限于位于名为“template”的子文件夹中的文件。
所以我在目录〜/ foo中,我想rsync,其中--include =“* /”只匹配名为'template'的子文件夹。所以〜/ foo / bar / template / baz / somefile.html会匹配,所以~foo / bar / baz / qux / template / someotherfile.html,但不是〜/ foo / bar / thirdfile.html
答案 0 :(得分:2)
虽然看起来有点奇怪,但这对我有用:
rsync -uvma --include="*/" --include="*/template/*/*.html" --include="*/template/*.html" --include="template/*.html" --include="template/*/*.html" --exclude="*" $spec_dir $html_spec_dir
答案 1 :(得分:2)
这个适用于我:
rsync -umva --include="**/templates/**/*.html" --exclude="*.html" source/ target
你在寻找**
吗?在这里您必须小心选择排除模式,*
将无法正常工作,因为它匹配路上的目录。如果rsync找到foo/templates/some.html
,它将首先复制foo
,然后foo/templates
然后foo/templates/some.html
,但在它到达之前*
已经匹配foo
没有任何东西被复制。
答案 2 :(得分:0)
这是有效的:
rsync -uvma --include="*/" --include="templates/**.html" --exclude="*" $html_all_dir $html_dir
我的猜测是,你的格式和我的可能完成同样的事情。我知道在这之前我尝试了大约20种不同的模式,这是唯一一种正常工作的模式。我不认为我尝试了你的格式:)