
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 wc
obtiene los resultados solo después de que grep
se haya ejecutado en todas las carpetas, generando una lista completa con todos los resultados que wc
simplemente genera la suma total de "foo" que ocurre en todos los directorios. haciendo xargs
innecesario 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