
Ich habe ein Verzeichnis mit vielen Unterverzeichnissen, die Textdateien enthalten. Ich muss wissen, wie oft „foo“ in jedem einzelnen Unterverzeichnis vorkommt (aber nur auf der ersten Ebene), nicht die Gesamtzahl der Wörter „foo“, die in allen Unterverzeichnissen vorkommen. Kurz gesagt würde ich dies lösen, indem ich es einfach manuell in jedem Verzeichnis ausführe
grep -riwo 'foo' | wc -l
Da es viele davon gibt, ist dies offensichtlich nicht machbar. Also habe ich dies in dem Verzeichnis versucht, das die Unterverzeichnisse enthält
ls -1 | xargs -L1 grep -riwo 'foo' | wc -l
Aber das funktioniert auch nicht, weil von dem, was ich bekommen habe, wc
die Ausgaben erst nach grep
der Ausführung auf allen Ordnern bekommt, eine vollständige Liste mit allen Ergebnissen weiterleitet, wc
die einfach die Gesamtsumme der "foo" ausgibt, die in allen Verzeichnissen vorkommen, was xargs
an dieser Stelle unnötig ist
Antwort1
Da Sie nur Gesamtsummen pro Verzeichnis der obersten Ebene wünschen, fügen Sie eine einfache Schleife hinzu:
for d in */; do
printf '%s: ' "$d"; grep -riwo 'foo' -- "$d" | wc -l
done