Как использовать 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.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.