Как использовать ack для поиска имени файла

15

Я начал использовать ack, который намного быстрее, чем grep. Однако, используя ack, я хочу искать имя файла, а не его содержимое. Есть способ сделать это?

Надаль
источник

Ответы:

16

Используйте правильный инструмент для правильной работы. Если вы хотите найти имя файла, используйте 'find':

$ # search for all *.txt file in current directory
$ find . -iname "*.txt"
Ли Райан
источник
1
очень верно «Как только вы держите молоток в руке, все начинает выглядеть как гвоздь» :)
akira
2
Хорошо, ack (и grep) более хороши, потому что вам не нужно явно указывать регулярные выражения, если вы этого не хотите. Я обычно просто делаюfind . | ack whatev.ext
Ehtesh Choudhury
Это работает и для поиска каталогов.
Пратик Хадлоя
1
find и ack ведут себя по-разному, поскольку ack по умолчанию отфильтровывает множество результатов (содержимое каталогов контроля версий, скомпилированные объекты в исходном хранилище), которые будут включены в find. Лучший молоток зависит от желаемых результатов.
Джошуа Голдберг
1
Это не отвечает на вопрос ...
lajarre
23
ack -g REGEX

Распечатать файлы, где относительный путь + имя файла совпадает с REGEX

Данил Куткевич
источник
1
добавьте [^/]*$в свой REGEX для поиска только по имени файла
simon
7

Я согласен, что имеет смысл использовать find, если вы просто ищете * .txt файлы. Тем не менее, ack имеет мощные функции обнаружения типов файлов, так что вы можете использовать

ack -f --perl

который найдет все файлы Perl, основываясь как на имени файла (* .pm, * .pl, * .t и * .pod), так и на строке shebang.

Энди Лестер
источник
1

Ты можешь сделать :

ack -f | ack "filename.ext"
Оливье
источник