对于问题 1,您可以这样做:
find . -name "*.txt" | xargs grep -i "abc" | wc -l
这会计算所有文本文件中abc的匹配总数。
对于问题 2,我想出了:
find . -name "*.txt" -exec grep -i "abc" {} + | cut -d: -f1 | sort | uniq | wc -l
这仅从匹配列表中获取唯一的文件名并对其进行计数(可能不需要排序)。
正如奇迹 173 所指出的,grep带有“每个文件一个匹配”标志,因此该命令可以缩短为:
find . -name "*.txt" -exec grep -il "abc" {} + | wc -l