Eu gostaria de grep todos os arquivos, exceto alguns tipos de arquivo?

29

Como recursivamente grep arquivos dentro de determinadas pastas, exceto alguns tipos de arquivo?

Por exemplo, estou procurando uma string dentro da minha pasta de espaço de trabalho, mas ela acaba pesquisando dentro de arquivos sql e gera seqüências de caracteres serializadas.

Portanto, neste caso, gostaria de grep da pasta do espaço de trabalho, exceto arquivos sql.

De preferência, estou procurando por um de uma linha, se possível.

    
por chrisjlee 09.02.2012 / 00:07

2 respostas

39

Se você tem o GNU grep , pode usar a opção --exclude=GLOB , como

grep -r --exclude='*.sql' pattern dir/
    
por 09.02.2012 / 00:57
7

Isso fará isso para você e excluirá arquivos .sql e .txt:

find /some/dir -type f ! -name '*\.sql' ! -name '*.txt' -print0 | xargs -0 grep 'foobar'

No entanto, parece que o ack seria uma ferramenta muito melhor para o que você está tentando fazer:

ack -a --nosql 'foobar' /some/dir
    
por 09.02.2012 / 00:17

Tags