
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 wc
obtém as saídas somente depois de grep
ter sido executado em todas as pastas, canalizando uma lista completa com todos os resultados para wc
que simplesmente produza a soma total de "foo" ocorrendo em todos os diretórios, tornando xargs
desnecessá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