Wie kann man zählen, wie oft ein Wort in den Dateien in jedem Ordner vorkommt?

Wie kann man zählen, wie oft ein Wort in den Dateien in jedem Ordner vorkommt?

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, wcdie Ausgaben erst nach grepder Ausführung auf allen Ordnern bekommt, eine vollständige Liste mit allen Ergebnissen weiterleitet, wcdie einfach die Gesamtsumme der "foo" ausgibt, die in allen Verzeichnissen vorkommen, was xargsan 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

verwandte Informationen