计算 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-r首先是 GNU 扩展),您可以告诉它打印 NUL 分隔的文件的路径,然后计算其输出中的 NUL 数量。

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

这里用于tr -cd '\0'删除除NUL(补集)d之外的所有字符并计算字节数。cwc -c

GNU 实用程序的替代方案是grep -zc '^'orsed -z '$='gawk -v RS='\0' 'END{print NT}'

相关内容