Intereting Posts
проверить текущий размер очереди для отставания Печать интерфейса-ipaddress с помощью одной команды (по каналам) Какие данные хранятся в журнале файловой системы ext4? Как я могу предоставить права записи www-данных для тома Docker с SUBUIDs / SUBGIDs? Почему «ls | wc -l "показать правильное количество файлов в текущем каталоге? Не удается подключиться к WLAN с netctl Ключевые слова конфигурации Apache / OpenSSL `SSLProtocol` против` SSLCipherSuite` .txt Файл с Mac не будет правильно преобразован Как mdadm распознает, какое устройство является правильным, чтобы синхронизировать других с Linux Mint 12 прокрутка двумя пальцами Насколько разумно делать надёжную работу над системами с ограничительной umask? Что такое i915.modeset = 1? Как удалить пустые строки в файле? в чем смысл 1 в конце awk-скрипта Отсутствие «недостижимого» ответа для исходящего TCP-соединения при использовании маршрутизации fwmark и политики

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

Это то, что я сейчас имею, однако он печатает общее количество раз, когда Author появляется во всех файлах: 128367

grep -roh 'Author' $1 | wc -w 

Однако как распечатать количество слов для каждого файла отдельно?

Также аргумент, который он принимает, – это папка с файлами.

Вы можете использовать grep для этого. Второй grep – это фильтрация файлов без совпадений.

 grep -rc 'Author' ${1} | grep -v ':0$' 

Перебирать файлы:

 for file in "$1"/* ; do if [[ -f "$file ]] ; then printf %s: "$file" grep -o Author "$file" | wc -w fi done 

Вы также можете использовать Perl:

 perl -lne 'BEGIN { $c = 0 } $c++ while /Author/g; if (eof) { print "$ARGV: $c"; $c=0 } ' "$1"/* 

С GNU Parallel:

 parallel --tag 'grep -oh Author {} | wc -w' ::: *.dat 

Если есть subdirs:

 find . -name '*.dat' | parallel --tag 'grep -oh Author {} | wc -w'