이것이 내가 현재 가지고 있는 것이지만, 모든 파일에 작성자가 나타나는 총 횟수가 인쇄됩니다: 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'