Моя структура папок похожа на это:
/app
/app/data
...
/app/secondary
/app/secondary/data
Я хочу рекурсивно искать /app
, включая /app/data
. Я не хочу искать /app/secondary/data
как бы то ни было. Это, что я имею до сих пор:
ack --ignore-dir=data searchtext
ack --ignore-dir=secondary/data searchtext
Первая команда игнорирует оба каталога, и второй не игнорирует ни одного из них. Из папки приложения, на что должна быть похожей моя команда ack?
Этот ответ для версий Ack до 2, см. Этот ответ для версий Ack >=2.
Первый ответ игнорирует оба, потому что они оба имеют 'data' в качестве подкаталога, а ack ищет подкаталоги по умолчанию. Поэтому он будет игнорировать любой подкаталог с таким именем. К сожалению, ваш второй способ тоже не работает. У меня работает так:
ack -a searchtext -G '^(?!.*secondary/data.*).*$'
Вместо -a для поиска всех файлов, смотрите ack-grep --help=types для поиска только определенных типов файлов, например --type=text