grep vários tipos de arquivos recursivamente

2

Estou tentando descobrir como pesquisar "_iterator_tag" em todos os sub-diretórios de forma recursiva e em arquivos com extensões .cpp, .h, .hpp, .cxx, .inl por enquanto tudo o que posso fazer é pesquisar cada um desses tipos de arquivo separadamente como abaixo grep -R "_iterator_tag" --include '* .cpp' Existe uma maneira mais rápida de pesquisar todos esses tipos de arquivos juntos? Obrigado

    
por blueskin 02.12.2010 / 22:59

4 respostas

4

use ack . É ótimo para pesquisar código-fonte (e não procurar em imagens, ou artefatos RCS, como diretórios .svn)

    
por 02.12.2010 / 23:02
2

Você pode especificar várias instâncias de --include na linha de comando (elas são "ou" juntas).

Editar: especificamente

 grep -r --include '*.cpp' --include '*.h' --include '*.hpp' --include '*.cxx' --include '*.inl' "_iterator_tag" /some/path
    
por 03.12.2010 / 00:35
0

tente

find /some/path -name \( '*.cpp' -o -name '*.h' -o -name '*.hpp' -o -name '*.cxx' -o -name '*.ini' \) | xargs grep "_iterator_tag"
    
por 02.12.2010 / 23:42
0

Eu defino os seguintes aliases no meu .bashrc

ffg() { eval find $1 | xargs -n 1 grep -nH $2 2>/dev/null ; }
fc() { ffg "-name \*.c -o -name \*.cpp" "$*"; }
fh() { ffg "-name \*.h -o -name \*.hpp" $* ; }
fch() { ffg "-name \*.c -o -name \*.cpp -o -name \*.h -o -name \*.hpp" $* ; }

Então, eu costumava fazer:

cd <root subdir>    
fch _iterator_tag

Claro que você precisaria de um conjunto diferente de tipos de arquivos.

    
por 03.12.2010 / 07:01

Tags