Como posso contar o número de arquivos (em um diretório) que contêm uma determinada string como entrada no bash / sh?
18
grep -l "string" * | wc -l
procurará por "string" no conteúdo de todos os arquivos no diretório ativo e informará quantas correspondências.
grep -lr "string" directory | wc -l
se você não deseja pesquisa recursiva, pode usar a opção find com maxdepth:find directory -maxdepth 1 -type f -exec grep -l "string" {} + | wc -l
Observe que esta segunda opção é mais lenta que o grep.grep
O parâmetro s-l
produzirá apenas os nomes de arquivos correspondentes$PATTERN
,wc
podendo contá-los posteriormente.fonte
Esclarecimento: procura o número de arquivos que possuem o "padrão_para_um_ aspeto" em seu conteúdo e não em seus nomes de arquivo (como a resposta de Wag). Da sua pergunta, é difícil dizer o que você está procurando.
fonte
find . ! -name . -prune -type f
(não perca os backticks). Este comando lista apenas os arquivos na pasta.Isso funciona no Bash com qualquer nome de arquivo:
Explicação:
grep
A-Z
opção 's' imprime todos os resultados com um separador de by 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
.fonte