Как подсчитать, сколько раз слово встречается в файлах каждой папки?

Как подсчитать, сколько раз слово встречается в файлах каждой папки?

У меня есть каталог с большим количеством подкаталогов с текстовыми файлами в них. Мне нужно узнать, сколько раз "foo" встречается в каждом подкаталоге (но только на первом уровне), а не общую сумму слов "foo", существующих во всех подкаталогах. Короче говоря, я бы решил эту проблему, просто запустив вручную каждый каталог

grep -riwo 'foo' | wc -l 

Очевидно, что поскольку их много, это невыполнимо. Поэтому я попробовал это в каталоге, содержащем подкаталоги

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

Но это также не работает, потому что из того, что я получил, wcвыводятся только после того, grepкак было выполнено во всех папках, передавая полный список со всеми результатами в wcтот, который просто выводит общую сумму "foo", встречающихся во всех каталогах, что делает xargsненужным на этом этапе

решение1

Поскольку вам нужны только итоговые данные по каталогу верхнего уровня, добавьте простой цикл:

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

Связанный контент