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

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

grep -riwo 'foo' | wc -l 

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

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

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

1
задан 22 June 2019 в 19:18

1 ответ

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

for d in */; do 
  printf '%s: ' "$d"; grep -riwo 'foo' -- "$d" | wc -l
done
0
ответ дан 22 June 2019 в 19:18

Другие вопросы по тегам:

Похожие вопросы: