Como posso recursivamente grep arquivos particulares em um diretório?

13

Sou novo no linux e no grep e estou tentando encontrar o caminho.

Usando find -name *.java , consigo localizar os nomes de todos os arquivos java em um diretório específico. Suponha que eu queira contar o número de vezes que foo ocorre nesses arquivos, como eu faria isso?

Eu tenho tentado coisas como:

grep -r "foo" *.java

e obtendo respostas como:

grep:  *.java:  No such file or directory

Alguma idéia?

    
por Eric Wilson 06.08.2009 / 16:44

4 respostas

15
find . -name '*.java' | xargs grep <your pattern here>
    
por 06.08.2009 / 16:50
6

Existe uma ferramenta especialmente concebida para este tipo de necessidade: ack .

ack is a tool like grep, aimed at programmers with large trees of heterogeneous source code

Leia também o "Os 10 principais motivos para usar a ack em vez do grep" na página ack .

    
por 07.08.2009 / 13:16
3

E sobre:

grep -irn --include="*\.java" somePhrase *
    
por 30.08.2012 / 08:47
0

find . -type f -name '*.java' -print0 | xargs -0 grep -wo 'foo' | wc -l

    
por 09.04.2013 / 13:29

Tags