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

时间:2017-02-07 06:37:08

标签: shell unix solaris

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

我尝试了其他帖子中提供的一些解决方案,唯一有效的解决方案就是这个,因为使用此操作系统我无法使用命令grep -o

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

其中x是我想要计算的事件。这个有效,但它不是递归的,有没有办法让它递归?

3 个答案:

答案 0 :(得分:1)

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

我建议像:

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

-c的{​​{1}}参数意味着使用提供的字符串的反面 - 即在这种情况下,匹配所有 tr

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

答案 1 :(得分:0)

我希望你能安装nawk。那么你可以:

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

答案 2 :(得分:0)

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

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

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