我试图递归地将目录/文件结构从一个目录复制到另一个目录,只保留 html 文件。应该是包含/排除的简单案例,不是吗?
我只想先打印出文件。当我做对了,我会复制它们。
rsync -a --list-only -v SOURCEDIR --exclude='.*' --include='**/*.html'
Run Code Online (Sandbox Code Playgroud)
给我所有的文件。
rsync -a --list-only -v SOURCEDIR --include='**/*.html' --exclude='*'
Run Code Online (Sandbox Code Playgroud)
和
rsync -a --list-only -v SOURCEDIR --include='*.html' --exclude='*'
rsync -a --list-only -v SOURCEDIR --include=*.html --exclude=*
Run Code Online (Sandbox Code Playgroud)
不给我文件。
rsync -a --list-only -v SOURCEDIR --include='*.html' --exclude='*.*'
Run Code Online (Sandbox Code Playgroud)
看起来它给了我整个目录结构和只有 html 文件。但我不想要空目录。
帮助!
在 Mac OS 10.6 上
Sha*_*ers 11
Rsync 可能会混淆像这样的选择性副本。我使用以下内容来完成您要求的任务:
rsync -avP \
--filter='+ */' \
--filter='+ **/*.html' \
--filter='- *' \
--prune-empty-dirs \
--delete \
/source/ \
/dest/
Run Code Online (Sandbox Code Playgroud)
基本上,您需要在搜索中包含所有目录,然后将所有*.html
文件添加到列表中,排除所有其他文件。
该--prune-empty-dirs
选项使用起来很方便,因为它排除了任何没有*.html
文件的目录。
您是否考虑过使用 find 来完成您的艰苦工作?
类似的东西
find ./ -name "*.html" -exec rsync -R {} /target/base/directory/ \;
Run Code Online (Sandbox Code Playgroud)
将重新创建 ./ 的目录树,其中找到 html 文件,并在 /target/base/directory 下构建相同的目录树
归档时间: |
|
查看次数: |
5206 次 |
最近记录: |