这是我目前拥有的,但是它打印了作者在所有文件中出现的总次数: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'