What is the syntax of lftp's mirror -x (exclude) option?
I want to mirror a directory using lftp
but I want to exclude certain subdirectories.
I tried
mirror -R -e -x ^\.svn$ /documents/ /test
and
mirror -R -e -x /^\.svn$/ /documents/ /test
but neither of them excluded the .svn directories.
mirror -R -e -x ^\.svn$ /documents/ /test
is just fine.
The trick is, as .svn is a directory it will only be matched by a pattern that ends in a slash:
mirror -R -e -x ^\.svn/$ /documents/ /test
From my experiments, it seems the include and exclude patterns are matched against the whole path with no initial / but with a trailing / for a directory.
Thus if you're trying to match a directory name like .svn which can occur at any level in the tree, you need this RE:
(^\|/).svn/
The ^ alternative matches .svn at the top level and the / alternative matches any level below that.
The | character is significant to lftp so needs to be sloshed.
I'm using
--exclude /\..+/$
to exclude all folders starting with a dot.