计算多个文件中出现的次数

Counting number of occurrences in several files

我想检查字符“[”在具有相同扩展名的目录的所有文件中递归地出现的次数,例如*。C。我在 Unix 中使用 SO Solaris。

我尝试了其他帖子中给出的一些解决方案,唯一有效的是这个,因为有了这个 OS 我不能使用命令 grep -o:

sed 's/[^x]//g' filename | tr -d '012' | wc -c

其中 x 是我要计算的出现次数。这个可以,但是不是递归的,有什么办法让它递归吗?

您可以从 find 获取递归列表并使用其 -exec 参数执行命令。

我建议:

find . -name '*.c' -exec cat {} \; | tr -c -d ']' | wc -c

tr-c 参数意味着使用提供的字符串的反义词——即在这种情况下,匹配所有内容 ].

find 命令中的 . 表示在当前目录中搜索,但您也可以在那里提供任何其他目录名称。

我希望你已经安装了 nawk。那么你可以:

nawk '{a+=gsub(/\]/,"x")}END{print a}' /path/*

您可以自己编写一段代码。我建议您 运行 以下内容:

awk '{for (i=1;i<=NF;i++) if ($i=="[") n++} END{print n}' *.c

这将在当前目录的所有文件中搜索“[”并打印出现的次数。