lftp的镜像-x(排除)选项的语法是什么?

我想使用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是重要的,所以需要被搅动。