Исключите все, начиная с точки в команде lftp mirror - PullRequest
0 голосов
/ 14 мая 2019

Я использую LFTP для зеркального отображения некоторых файлов Git на моем сервере из образа Docker с помощью поставщика CI / CD Pipeline.Это работает, как и ожидалось, но при использовании команды mirror из LFTP мне нужно исключить любой тип файла, начинающийся с точки, например:

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

Но ни один из них не работает, он просто выскакивает этой команды -x и переходит к следующей (например, --exclude README.md).

Полагаю, речь не идет о -x или --exclude, поскольку с документы :

mirror [ OPTS ] [ источник [ цель ]]

[...]

-x RX, --exclude = RXисключить соответствующие файлы

Эти тоже не сработали:

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

Что тогда не так?Разве это не действительное регулярное выражение для Bash ?

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Может быть проще использовать опцию -X, например: -X. * -X. * /

0 голосов
/ 15 мая 2019

По какой-то причине единственный способ, который сработал для меня, это использовать $ в конце регулярного выражения --exclude, например:

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

Без концаразделитель строк, кажется, вообще не работает , просто игнорирует этот параметр --exclude или -x и переходит к следующему.Кроме того, регулярное выражение должно быть заключено в кавычки (одинарные или двойные).

Надеюсь, это кому-нибудь поможет:)

...