如何将匹配的文件数存储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
之外的所有字符并计算字节数。c
wc -c
GNU 实用程序的替代方案是grep -zc '^'
orsed -z '$='
或gawk -v RS='\0' 'END{print NT}'
。