我想在具有相同扩展名的目录的所有文件中递归地检查字符'['的出现次数,例如, *。C。我正在使用Unix中的SO Solaris。
我尝试了其他帖子中提供的一些解决方案,唯一有效的解决方案就是这个,因为使用此操作系统我无法使用命令grep -o
:
sed 's/[^x]//g' filename | tr -d '012' | wc -c
其中x是我想要计算的事件。这个有效,但它不是递归的,有没有办法让它递归?
答案 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
这将在当前目录的所有文件中搜索“[”并打印出现次数。