Use "grep" para corresponder o texto em vários arquivos

5

Eu tenho dados em vários arquivos. Eu quero encontrar algum texto que corresponda em todos os arquivos. Posso usar o comando grep para isso? Se sim, então como?

    
por Rupesh Pawar 29.08.2011 / 15:27

4 respostas

5

Se você não sabe exatamente onde os arquivos estão localizados, mas conhece seus nomes, você pode usar find :

find .  \( -name "filename1" -o -name "filename2" \) -exec grep "<grepstatement>" '{}' \; -print

Supondo que os arquivos estejam neste diretório em algum lugar.

    
por 29.08.2011 / 15:41
7

Basta adicionar todos os arquivos na linha de comando. Você pode usar * ou? ou o que seu shell permitir como espaço reservado.

Da página de manual:

grep [OPTIONS] PATTERN [FILE...]

significa: quantos arquivos você desejar .. ou nenhum, se você desejar grep stdin / pipe.

    
por 29.08.2011 / 15:57
4
grep 'mydata' *

O símbolo star * significa que você deseja pesquisar em vários arquivos. Se você deseja pesquisar por vários arquivos em vários diretórios, você pode adicionar -R para uma pesquisa recursiva.

grep 'mydata' * -R
    
por 29.08.2011 / 15:40
0

Eu finalmente fiz:

grep -rli 'match_me' -- file1 file2 file3

Parece ser amplamente padronizado nos sistemas Debian / Bash que um traço duplo sem nome significa que nenhum sinalizador mais pode ser definido; Muitas vezes, implicando que todos os argumentos restantes são caminhos de arquivo. Apesar de disclaimer, eu não sei se esta é a semântica pretendida ou apenas um sintoma que se encaixa nas ferramentas que eu uso.

    
por 04.02.2015 / 00:52

Tags