Как насчет начать с:
cat * | sed 's/ /\n/g' | grep '^aaa$' | wc -l
как в следующей расшифровке:
pax$ cat file1
this is a file number 1
pax$ cat file2
And this file is file number 2,
a slightly larger file
pax$ cat file[12] | sed 's/ /\n/g' | grep 'file$' | wc -l
4
sed
преобразует пробелы в символы новой строки (вы можете включить другие пробелы, а также символы табуляции, с sed 's/[ \t]/\n/g'
). grep
просто получает те строки, которые имеют нужное слово, тогда wc
подсчитывает эти строки для вас.
Теперь могут быть крайние случаи, когда этот сценарий не работает, но он должен подойти для подавляющего большинства ситуаций.
Если вам нужно целое дерево (а не только один уровень каталога), вы можете использовать что-то вроде:
( find . -name '*.txt' -exec cat {} ';' ) | sed 's/ /\n/g' | grep '^aaa$' | wc -l