我试图recursion复制目录/文件结构从一个目录到另一个,只保留HTML文件。 应该是一个简单的情况下包含/排除不应该吗?
我只想先打印出文件。 当我得到这个权利,我会复制他们。
rsync -a --list-only -v SOURCEDIR --exclude='.*' --include='**/*.html'
给我所有的文件。
rsync -a --list-only -v SOURCEDIR --include='**/*.html' --exclude='*'
和
rsync -a --list-only -v SOURCEDIR --include='*.html' --exclude='*' rsync -a --list-only -v SOURCEDIR --include=*.html --exclude=*
给我没有文件。
rsync -a --list-only -v SOURCEDIR --include='*.html' --exclude='*.*'
看起来像它给了我整个目录结构,只有HTML文件。 但是我不想要空目录。
帮帮我!
在Mac OS 10.6上
你有没有考虑过使用find来做你的辛勤工作?
东西沿线
find ./ -name "*.html" -exec rsync -R {} /target/base/directory/ \;
将重新创build./的目录树,在其中findhtml文件,并在/ target / base /目录下build立相同的目录树
Rsync可能会混淆像这样的select性副本。 我使用以下来完成你所要求的任务:
rsync -avP \ --filter='+ */' \ --filter='+ **/*.html' \ --filter='- *' \ --prune-empty-dirs \ --delete \ /source/ \ /dest/
基本上你需要在search中包含所有目录,然后将所有*.html文件添加到列表中,排除所有其他文件。
--prune-empty-dirs选项非常方便,因为它排除了没有*.html文件的任何目录。
我不是100%肯定这是最好的方法,但是你可以对你最后一次尝试添加一个微小的调整,并使其工作。 只需添加修剪目录选项( --prune or -m )。
rsync -am --list-only -v SOURCEDIR --include='*.html' --exclude='*.*'
[0]“最好的”,我的意思是最干净和最有效的方法。 似乎应该有更优雅的expression方式,但我不知道它是什么。