grep -l "string" * | wc -l
procurará "string" no conteúdo de todos os arquivos no diretório de trabalho e informará quantos correspondências.
Como posso contar o número de arquivos (em um diretório) contendo uma determinada string como entrada em bash / sh?
grep
s -l
só emitirá os nomes dos arquivos que correspondem a $PATTERN
, wc
poderá contá-los posteriormente.
grep -l "$PATTERN" * | wc -l
awk '/pattern_to_look_for/ {s+=1; nextfile;} END {print s}' *
Esclarecimento: Isso procura pelo número de arquivos que tem o "pattern_to_look_for" em seus conteúdos e não em seus nomes de arquivos (como a resposta de Wag). Da sua pergunta, é difícil dizer o que você está procurando.
Isso funciona no Bash com qualquer nome do arquivo:
grep -lZ "$pattern" * | tr -cd 'grep -lZ "$pattern" * | tr -cd '%pre%0' | wc -c
0' | wc -c
Explicação:
grep
de -Z
imprime todos os resultados com um separador de ␀ bytes. Esse caractere não pode fazer parte de um nome de arquivo, portanto, podemos simplesmente contar o número de separadores para obter o número de arquivos. tr
. wc
.