Procurando por uma string em todos os arquivos .txt [duplicados]

0

Existe uma maneira de procurar uma string test123 em todos os arquivos de texto no disco rígido?

    
por Craxxurz 09.03.2016 / 19:33

4 respostas

2

Você pode usar find para obter todos os arquivos .txt e, em seguida, grep da string desejada

$ find / -type f -name '*.txt' -exec grep 'test123' {} +

Onde:

  • / procura em todo o servidor.
  • -type f encontra apenas arquivos, não diretórios
  • -name '*.txt' encontra todos os arquivos .txt
  • -exec grep 'test123' search test123 em todos os arquivos encontrados
  • {} é substituído pelo nome do arquivo atual sendo processado em todos os lugares em que ocorre nos argumentos para o comando, não apenas nos argumentos em que está sozinho
  • + irá melhorar significativamente o tempo de execução (já que irá conter os argumentos antes da execução até)
por 09.03.2016 / 19:43
1

Assumindo que por "todos os arquivos de texto" você quer dizer todos os arquivos terminados em .txt:

find / -type f -name '*.txt' -exec grep -i 'test123' {} \;

ou

find / -type f -name '*.txt' -exec grep -i 'test123' {} +
    
por 09.03.2016 / 19:45
1
find / -type f -exec grep -I test123 {} +

A versão com + em vez de \; é muito mais rápida e -I ignora arquivos binários. Ou simplesmente use grep recursivo:

grep -Ir test123 /

Você provavelmente também deseja 2>/dev/null , porque haverá muitas linhas de "permissão negada".

    
por 09.03.2016 / 19:45
-1

Algo para apontar você na direção certa:

find / -type f -name *.txt para encontrar todos os arquivos .txt, supondo que você tenha apenas um disco rígido. E, em seguida, use apenas grep para pesquisar nesses arquivos.

    
por 09.03.2016 / 19:38

Tags