데이터 파일의 디렉토리를 검색하고 각 파일에 특정 단어가 나타나는 횟수를 어떻게 인쇄할 수 있습니까?

데이터 파일의 디렉토리를 검색하고 각 파일에 특정 단어가 나타나는 횟수를 어떻게 인쇄할 수 있습니까?

이것이 내가 현재 가지고 있는 것이지만, 모든 파일에 작성자가 나타나는 총 횟수가 인쇄됩니다: 128367

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

하지만 각 파일의 단어 수를 별도로 인쇄하는 방법은 무엇입니까?

그것이 취하는 인수는 파일을 포함하는 폴더이기도 합니다.

답변1

이 작업을 수행 하는 데 사용할 수 있습니다 grep. 두 번째는 grep일치하는 항목이 없는 파일을 필터링하는 것입니다.

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

답변2

루프 파일:

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"/*

답변3

GNU 병렬 처리 사용:

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

하위 디렉터리가 있는 경우:

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

관련 정보