ack не повторяется при указании шаблона файла

1358
sashang
ack "#define" 

вернется в подкаталоги и найдет файлы, которые содержат #define. Но я хотел ограничить поиск файлами * .h, поэтому я попытался

ack "#define" *.h 

и это больше не повторяется. Единственные результаты приходят из файлов в рабочем каталоге.

Версия:

ack 1.96 работает под Perl 5.14.2 в / usr / bin / perl

3
См. Также [this] (http://superuser.com/q/97910/1686), [this] (http://superuser.com/q/332442/1686), [this] (http: // superuser. com / q / 246061/1686), ... grawity 12 лет назад 0

1 ответ на вопрос

4
grawity

Подстановочный знак *.hрасширяется вашей оболочкой, и ack принимает в качестве аргументов только отдельные файлы - ему некуда возвращаться.

Чтобы избежать этого, указать подстановочные внутри одинарные или двойные кавычки, но извед, вероятно, не будет признавать его в качестве шаблона: ack "#define" "*.h".

Лучшим вариантом является использование --hhтолько для включения заголовочных файлов (см. --help type) Или -G '\.h$'только для включения файлов, соответствующих указанному регулярному выражению Perl.

В ack2 вместо -G (который был удален) вы можете сделать: ack -g '\ .h $' | ack -x '#define' jondro 10 лет назад 1

Похожие вопросы