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 все равно.