2016-05-04 1 views
1

Я пытаюсь передать сложное регулярное выражение как шаблон игнорирования. Я хочу игнорировать все подпапки locales/кромеlocales/US/en/*. Возможно, мне придется отказаться от использования файла .agignore, но я стараюсь избегать этого.Развернуть строку командной строки exclude с zsh

Я использую серебряный искатель (аналогичный Ack, Grep). Я использую zsh в моем терминале.

Это работает очень хорошо, и игнорирует все региональные подпапок кромеlocales/US:

ag -g "" --ignore locales/^US/ | fzf 

Я также хочу, чтобы игнорировать все locales/US/*кроме для locales/US/en Хотите, я хочу это, но он не работает.

ag -g "" --ignore locales/^US/^en | fzf 

Мысли?

ответ

1

Добавить несколько команд --ignore. Например:

ag -g "" --ignore locales/^US/ --ignore locales/US/^en 
+0

Ничего себе. Работал как шарм –

0

Следующая могут работать также:

find locales/* -maxdepth 0 -name 'US' -prune -o -exec rm -rf '{}' ';' 

Man Pages Documentation

-prune True; если файл является каталогом, не спускайтесь в него. Если задано -depth, false; нет эффекта. Поскольку -delete подразумевает -depth, вы не можете с пользой использовать -prune и -delete вместе.

-prune позволяет отфильтровать результаты (better description here)

-exec команды; Выполнение команды; true, если возвращается 0. Все следующие аргументы для поиска считаются аргументами команды до тех пор, пока аргумент, состоящий из ';' встречается. Строка '{}' заменяется на текущее имя файла, которое обрабатывается везде, где оно встречается в аргументах команды, а не только в тех аргументах, где она одна, как в некоторых версиях find. Возможно, обе эти конструкции должны быть экранированы (с «\») или процитированы, чтобы защитить их от расширения оболочкой. Примеры использования опции -exec см. В разделе ПРИМЕРЫ. Указанная команда запускается один раз для каждого сопоставленного файла. Команда выполняется в стартовом каталоге. Существуют неотвратимые проблемы безопасности, связанные с использованием -exec-действия; вместо этого вы должны использовать опцию -execdir.

-exec позволяет выполнять команду по любым результатам find возвращается.

+0

Я неправильно понял вопрос, он не удаляет 'US/en'. – TheIronDeveloper