如何使用find命令查找文本和文件的总出现次数

Nom*_*mad 6 shell grep find search

我正在尝试运行该find命令以查找特定文本字符串的总出现次数以及包含此文本字符串的文件数。

我现在拥有的是这个命令。

find . -name "*.txt" | xargs grep -i "abc"

这会报告所有包含文本“abc”的“*.txt”文件。我想要一两个 find 命令来获取

  1. abc 出现的总次数
  2. 其中包含 abc 的文件总数。

Sig*_*Ben 6

对于问题 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

  • 2.有点复杂。grep -l 将为包含搜索字符串的每个文件显示一行。 (2认同)