各フォルダー内のファイルに単語が何回出現するかをカウントするにはどうすればよいでしょうか?

各フォルダー内のファイルに単語が何回出現するかをカウントするにはどうすればよいでしょうか?

テキストファイルを含むサブディレクトリがたくさんあるディレクトリがあります。すべてのサブディレクトリに存在する単語「foo」の合計数ではなく、各サブディレクトリ(ただし、最初のレベルのみ)に「foo」が何回出現するかを知る必要があります。簡単に言うと、各ディレクトリで手動で実行するだけで解決できます。

grep -riwo 'foo' | wc -l 

明らかに、それらはたくさんあるので、これは実現不可能です。そこで、サブディレクトリを含むディレクトリでこれを試しました。

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

しかし、これは機能しません。私が得た結果から、すべてのフォルダーで実行されたwc後にのみ出力が取得され、すべての結果を含む完全なリストがパイプされ、すべてのディレクトリで発生する「foo」の合計が出力されるだけなので、その時点では不要になります。grepwcxargs

答え1

最上位ディレクトリごとの合計のみが必要なので、単純なループを追加します。

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

関連情報