我想使用lftp镜像一个目录,但我想排除某些子目录。
我试过了
mirror -R -e -x ^\.svn$ /documents/ /test
和
mirror -R -e -x /^\.svn$/ /documents/ /test
但是他们都没有排除.svn目录。
mirror -R -e -x ^\.svn$ /documents/ /test就好了。
诀窍是, .svn是一个目录,它只会被一个以斜线结尾的模式匹配:
mirror -R -e -x ^\.svn/$ /documents/ /test
我在用着
--exclude /\..+/$
排除以点开头的所有文件夹。
从我的实验看来,包含和排除模式似乎与整个path匹配,没有初始/尾随/目录。
因此,如果你想匹配一个目录名称,如.svn,它可能出现在树的任何级别,你需要这个RE:
(^\|/).svn/
^替代选项与顶层的.svn匹配,而/替代选项则匹配低于该选项的任何级别。
| 字符对于lftp是重要的,所以需要被搅动。