Como pesquisar e listar arquivos que não contenham frase específica [duplicate]

0

Estou executando o mesmo trabalho em cerca de 1.000 arquivos de entrada. Cerca de 10% destes falharão, mas a única maneira de verificar isso é percorrer os arquivos de saída e verificar se ele indica completed without error . Para economizar tempo, existe uma maneira de usar o comando grep para

  • Pesquise em um diretório especificamente por meio de arquivos de saída apenas (denominado oxxxxx ),
  • para aqueles que não contêm a frase completed without error ,
  • listando esses arquivos oxxxx na janela do terminal.

Obrigado!

    
por Leucine 14.04.2018 / 13:37

2 respostas

3

Usando extensão -L do GNU grep:

grep -L 'completed without error' o*

-L, --files-without-match

Suppress normal output; instead print the name of each input file from which no output would normally have been printed. The scanning will stop on the first match.

Sem o GNU grep:

for f in o*; do grep -q "completed without error" "$f" || printf "%s\n" "$f"; done
    
por 14.04.2018 / 14:07
1
grep -R <pattern> -L *

-R      recursively search
-L      files without match    

Exemplo:

 touch $(seq 1 100)  # create 100 files
 echo "testing" > 28
 echo "testing" > 32
 echo "testing" > 10
 echo "testing" > 15
 echo "testing" > 95
 echo "testing" > 72
 echo "testing" > 34
 echo "testing" > 25 # eight files with pattern
 $ grep -l test *|wc -l  # files that contains pattern
   8
 $ grep -L test *|wc -l  # files that doesn't contain pattern
  92
    
por 14.04.2018 / 14:12

Tags