grepで一致するファイル数を計算する

grepで一致するファイル数を計算する

一致するファイル数をgrep変数という変数に保存するにはどうすればよいですかnf

次のコマンドを使用grepし、計算はwc

grep -rl "${isufx[@]}" -e "$ptrn" -- "${fdir[@]}" | wc -l

答え1

次のコマンドを含めると、変数に保存されているファイルの数を計算できます$(...)

nf=$(grep -rl "${isufx[@]}" -e "$ptrn" -- "${fdir[@]}" | wc -l)

別のオプションは伝統的な逆引用符です。

nf=`grep -rl "${isufx[@]}" -e "$ptrn" -- "${fdir[@]}" | wc -l`

答え2

ファイル数を見つけてGNU find-rGNU拡張子の最初)を想定するには、NULで区切られたファイルパスを印刷してから、出力からNUL数を計算するように指示できます。

grep --null -rl "${isufx[@]}" -e "$ptrn" -- "${fdir[@]}" |
  tr -cd '\0' | wc -c

tr -cd '\0'NUL(補数)を除くすべての文字を削除し、dバイト数を計算するために使用されます。cwc -c

GNUユーティリティの代替grep -zc '^'はまたはですsed -z '$='gawk -v RS='\0' 'END{print NT}'

関連情報