grep -lR '226 Transfer complete\.' --include='*.log'
EDITADO
Estou procurando um comando para usar o GREP e o FIND para atingir a condição abaixo.
Cada arquivo de log contém o padrão de seqüência de caracteres "226 transferência concluída", que ocorre duas vezes. Em alguns arquivos, ocorre apenas uma vez ou nulo. Eu preciso capturar a lista de nomes de arquivos com zero e uma ocorrência. O comando a seguir funciona APENAS se o padrão de pesquisa não for encontrado no arquivo (ou seja, para contar apenas 'ZERO').
find . -type f -name "*.log" ! -exec grep -q "226 Transfer complete." {} \; - print
Estou usando a versão grep (GNU grep) 2.20. Eu preciso capturar os resultados no arquivo de texto também.
grep -lR '226 Transfer complete\.' --include='*.log'
Você pode usar awk
para contar ocorrências e imprimir o nome do arquivo se a contagem for menor que n
:
find . -type f -name \*.log -exec awk -vn=2 'BEGIN{c=0};
/PATTERN/{++c; if (c==n){exit}};END{if (c<n){print FILENAME}}' {} \;
Isso irá parar de contar assim que forem encontrados n
(neste caso 2
) correspondências.