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

8252
Nadal

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

13

4 ответа на вопрос

21
Danil Kutkevich
ack -g REGEX 

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

добавьте `[^ /] * $` к вашему REGEX для поиска только по имени файла simon 7 лет назад 0
16
Lie Ryan

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

$ # search for all *.txt file in current directory $ find . -iname "*.txt" 
очень верно «Как только вы держите молоток в руке, все начинает выглядеть как гвоздь» :) akira 14 лет назад 1
Хорошо, ack (и grep) более хороши, потому что вам не нужно явно указывать регулярные выражения, если вы этого не хотите. Я обычно просто делаю "найти". | ack whatev.ext` Ehtesh Choudhury 12 лет назад 2
Это работает и для поиска каталогов. Pratik Khadloya 12 лет назад 0
find и ack ведут себя по-разному, поскольку ack по умолчанию отфильтровывает множество результатов (содержимое каталогов управления версиями, скомпилированные объекты в исходном репозитории), которые будут включены в find. Лучший молоток зависит от желаемых результатов. Joshua Goldberg 9 лет назад 1
На самом деле, это [довольно сложно] (http://unix.stackexchange.com/a/84039/77539), чтобы заставить версию 2 ack вести себя как find. Joshua Goldberg 9 лет назад 0
Это не ответ на вопрос ... lajarre 9 лет назад 0
7
Andy Lester

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

ack -f --perl 

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

1
Olivier

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

ack -f | ack "filename.ext" 

Похожие вопросы