我正在使用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 的有效正则表达式吗?
答案 0 :(得分:0)
出于某种原因,对我有用的唯一方法是在$
正则表达式的末尾使用--exclude
,就像这样:
lftp -u $USERNAME, -e "[...] mirror [...] --exclude '^\..*$'[...]
没有行尾定界符似乎根本不起作用,只是忽略了--exclude
或-x
选项,而是转到下一个。另外,正则表达式必须用引号引起来(单引号或双引号)。
希望这对某人有帮助:)
答案 1 :(得分:0)
像这样使用-X选项可能会更容易: -X。* -X。* /