Может ли ack найти файлы только по имени файла? - PullRequest
26 голосов
/ 08 октября 2011

Используя ack (иногда упакованный как ack-grep) Я знаю, что могу найти paths , которые содержат определенную строку, выполнив:
ack -g somestring

Но что, если я хочу только файлы, которые имеют "somestring" в их именах файлов ?

Ответы [ 5 ]

44 голосов
/ 07 марта 2013

Я согласен, что это путь, но вы также можете легко сделать это с помощью ack:

ack -f | ack "string"

Здесь, "ack -f" рекурсивно перечисляет все файлы, которые он будет искать;передайте это второй команде ack для поиска по ней.У ack -f есть преимущество пропуска двоичных файлов и каталогов даже без дополнительных аргументов;часто команду «найти» можно заменить гораздо более короткой командой «ack».

23 голосов
/ 08 октября 2011

Вы можете использовать find утилиту. Как то так:

find /path/to/look/in -name '*somestring*' -print

В некоторых системах, если вы пропустите путь, используется текущий каталог. В других системах вы не можете его опустить, просто используйте . для текущего каталога.

Кроме того, прочитайте man find для многих других вариантов.

7 голосов
/ 27 июля 2016

Если вы хотите использовать ack, чтобы найти все файлы с somestring в их базовом имени, просто добавьте [^/]*$ к регулярному выражению, например,

ack -g somestring[^/]*$

К сожалению, --color будетпоказать совпадение от somestring до конца имени файла;но возможно сделать то, что вы просили, используя ack.

0 голосов
/ 22 марта 2014

Я пока не могу комментировать, иначе я бы добавил это к ответу @ dmedvinsky выше.Возможно, вы захотите объединить его подход с ответом @ whaley на другой вопрос , чтобы отфильтровать .svn файлы:

find /path/to/look/in -not -iwholename '*.svn*' -name '*somestring*' -print
0 голосов
/ 12 апреля 2012

это работает для меня, ack -all "somestring", где ack --all "somestring" будет искать все файлы, содержащие эту строку. ack "somestring" будет искать только файлы с этой строкой. если вы хотите добавить какой-либо тип файла для постоянного поиска, например, файлы ruby, или вы можете создать файл .ackrc в своем домашнем каталоге, добавьте следующую строку --type-add = ruby ​​= .haml, .rake, .rsel. Josh

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...