Во-первых, всякий раз, когда вы говорите «Я получаю сообщение об ошибке», измените его на «Я получаю следующую ошибку», а затем сообщите нам, в чем заключается ошибка. Ошибка важна для нас, чтобы помочь диагностировать проблему.
Во-вторых, используемая вами версия ack очень старая. Последний - 1,96.
В-третьих, ваши аргументы не в порядке. Вы ищете "foo", верно? Тогда вы должны делать «ack foo *», а не «ack * foo».
Вы не должны указывать «*» для имени файла. Позвольте ack найти файл за вас. Если «dev» - это каталог в каталоге, из которого вы вызываете, тогда «ack *» будет расширяться до «ack dev [другие каталоги]», что явно указывает ack на поиск в каталоге «dev», который переопределяет --ignore-dir
директива.
Что вам следует делать:
ack -i --ignore-dir=dev foo
И затем вы позволяете ack выполнять поиск файлов. Вы должны указывать имена файлов в командной строке только в том случае, если по какой-то причине вам нужно переопределить файлы, которые находит ack
.
Наконец, вам, вероятно, вообще не следует использовать ack для этой задачи. ack специально предназначен для поиска исходного кода, и он не будет искать файлы, которые не учитывает исходный код. Если вы просматриваете весь сервер, то вы, вероятно, захотите искать и файлы, не являющиеся исходным кодом, верно? Используйте для этого grep.
person
Andy Lester
schedule
12.12.2012