これが私が現在持っているものですが、すべてのファイルに作成者が表示される合計回数が印刷されます:128367
grep -roh 'Author' $1 | wc -w
しかし、各ファイルの単語数を別々に印刷するには?
それが取る引数はファイルを含むフォルダでもあります。
答え1
これを行うために使用できますgrep
。 2つ目は、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'