Ack: Искать дерево каталогов для файлов с определенным расширением

В основном я просто хочу сделать ack foo *.citrus и попросить ack развернуться и найти строку "foo" во всех файлах Citrus в текущем каталоге и ниже. Проблема в том, что это не сработает, если в текущем каталоге нет файлов Citrus.

Я пробовал работать с -G без успеха. Мне действительно нужно добавить тип файла в .ackrc, чтобы ограничить поиск файлами с заданным расширением?

Ответы

Ответ 1

По умолчанию ack выполняет поиск только в файлах с известными типами (например, *.java, *.cpp и т.д.). Он не знает о файлах *.citrus, поэтому для поиска в таких файлах вы должны использовать -a cmd line switch:

$ack -a -G '\.citrus$' foo
1.d/1.citrus
1:foo_bar

Ответ 2

Как было предложено Энди Лестером, вы также можете создать набор типов без проблем, чтобы добавить его в свой .ackrc:

ack --type-set=cit=.citrus --cit "foo"

Ответ 3

Вам не нужно устанавливать его в .ackrc, если вы этого не хотите. Вы также можете установить ACK_OPTIONS в своей среде или указать аргументы -type-set в командной строке. ack все равно.