在lftp mirror命令中排除所有以点开头的内容

时间:2019-05-14 14:16:46

标签: regex bash lftp

我正在使用LFTP使用CI / CD Pipeline供应商将某些Git文件从Docker镜像镜像到我的服务器。这可以按预期工作,但是从LFTP使用mirror命令时,我需要排除任何以点开头的文件,例如:

lftp -u $USERNAME, -e "[...] mirror [...] --ignore-time -x '/(\.\w*.*)/$' --exclude README.md [...]; exit" sftp://$HOST

但是这些都不起作用,它只是弹出-x命令并跳至下一个命令(例如--exclude README.md)。

我猜不是要使用-x--exclude,因为the docs中的

  

镜像 [ OPTS ] [ [目标]]

     

[...]

     

-x RX,--exclude = RX排除匹配的文件

这个也不起作用:

-x '/(\.\w*.*)/$'
-x /(\.\w*.*)/$
-x /(\.\w*.*)/
-x (\.\w*.*)
-x \.\w*.*

那怎么了?这不是 Bash 的有效正则表达式吗?

2 个答案:

答案 0 :(得分:0)

出于某种原因,对我有用的唯一方法是在$正则表达式的末尾使用--exclude,就像这样:

lftp -u $USERNAME, -e "[...] mirror [...] --exclude '^\..*$'[...]

没有行尾定界符似乎根本不起作用,只是忽略了--exclude-x选项,而是转到下一个。另外,正则表达式必须用引号引起来(单引号或双引号)。

希望这对某人有帮助:)

答案 1 :(得分:0)

像这样使用-X选项可能会更容易:      -X。* -X。* /