Como usar o ack para procurar o nome do arquivo

15

Comecei a usar o ack, que é muito mais rápido que o grep. No entanto, usando ack, quero procurar o nome do arquivo em vez do conteúdo do arquivo. Existe uma maneira de fazer isso?

Nadal
fonte

Respostas:

16

Use a ferramenta certa para o trabalho certo. Se você deseja procurar pelo nome do arquivo, use 'find':

$ # search for all *.txt file in current directory
$ find . -iname "*.txt"
Lie Ryan
fonte
1
muito verdadeiro. "Uma vez que você segura um martelo em sua mão tudo começa a parecer com um prego" :)
akira
2
Bem, ack (e grep) são melhores, porque você não precisa ser explícito sobre regexes, a menos que queira. Eu costumo fazer umfind . | ack whatev.ext
Ehtesh Choudhury
Isso funciona para encontrar diretórios também.
Pratik Khadloya
1
find e ack se comportam de maneira diferente, já que o ack filtra muitos resultados por padrão (conteúdo dos diretórios de controle de versão, objetos compilados em um repositório de origem) que seriam incluídos pelo find. O melhor martelo depende dos resultados desejados.
Joshua Goldberg
1
Isso não está respondendo à pergunta ...
lajarre
23
ack -g REGEX

Imprimir arquivos onde o caminho relativo + nome do arquivo corresponde ao REGEX

Danil Kutkevich
fonte
1
adicione [^/]*$ao seu REGEX para pesquisar apenas no nome do arquivo
simon
7

Concordo que faz sentido usar o find se você estiver apenas procurando por arquivos * .txt. No entanto, o ack possui recursos avançados de detecção de tipo de arquivo, para que você possa usar

ack -f --perl

que encontrará todos os arquivos Perl, com base no nome do arquivo (* .pm, * .pl, * .t e * .pod) e na linha shebang.

Andy Lester
fonte
1

Você pode fazer :

ack -f | ack "filename.ext"
Olivier
fonte