Como contar quantas vezes uma palavra aparece nos arquivos de cada pasta?

Como contar quantas vezes uma palavra aparece nos arquivos de cada pasta?

Eu tenho um diretório com vários subdiretórios contendo arquivos de texto. Preciso saber quantas vezes "foo" aparece em cada subdiretório (mas apenas no primeiro nível), e não a soma total da palavra "foo" existente em todos os subdiretórios. Em poucas palavras, eu resolveria isso simplesmente executando manualmente em cada diretório

grep -riwo 'foo' | wc -l 

Obviamente, porque há muitos deles, isso não é viável. Então tentei isso no diretório que contém os subdiretórios

ls -1 | xargs -L1 grep -riwo 'foo' | wc -l

Mas isso não funciona também porque pelo que consegui wcobtém as saídas somente depois de grepter sido executado em todas as pastas, canalizando uma lista completa com todos os resultados para wcque simplesmente produza a soma total de "foo" ocorrendo em todos os diretórios, tornando xargsdesnecessário naquele ponto

Responder1

Como você deseja apenas totais por diretório de nível superior, adicione um loop simples:

for d in */; do 
  printf '%s: ' "$d"; grep -riwo 'foo' -- "$d" | wc -l
done

informação relacionada