¿Cómo contar cuántas veces aparece una palabra en los archivos de cada carpeta?

¿Cómo contar cuántas veces aparece una palabra en los archivos de cada carpeta?

Tengo un directorio con muchos subdirectorios con archivos de texto. Necesito saber cuántas veces aparece "foo" en cada subdirectorio (pero solo en el primer nivel), no la suma total de la palabra "foo" que existe en todos los subdirectorios. En menos palabras, resolvería esto simplemente ejecutando manualmente en cada directorio.

grep -riwo 'foo' | wc -l 

Obviamente, debido a que hay muchos, esto no es factible. Entonces probé esto en el directorio que contiene los subdirectorios.

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

Pero esto tampoco funciona porque de lo que obtuve wcobtiene los resultados solo después de que grepse haya ejecutado en todas las carpetas, generando una lista completa con todos los resultados que wcsimplemente genera la suma total de "foo" que ocurre en todos los directorios. haciendo xargsinnecesario en ese momento

Respuesta1

Como solo desea totales por directorio de nivel superior, agregue un bucle simple:

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

información relacionada