
У меня есть каталог с большим количеством подкаталогов с текстовыми файлами в них. Мне нужно узнать, сколько раз "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