得到所有文件中的单词计数

时间:2012-10-28 20:01:01

标签: linux bash grep wc

我有一个目录树,其中包含一堆文件夹和子文件夹,以及这些子文件夹中的一堆文件。我需要在每个文件中得到'Hello'字样的计数,并将结果显示为'File'a'has'Hello'n times','File'b'''Hello'm times'等等。我如何在linux中编写脚本,以便我可以在每个文件中获得单词hello的单词计数。在浏览网页后我尝试了一些与'wc'的grep组合,但这给了我所有文件夹中所有文件的总计数。

谢谢

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

find . -type f | xargs -n1 grep "Hello" -c

-type f添加到find可确保它只返回文件,而不是目录。将-n1添加到xargs使得find返回的每个文件都可以自己调用grep,这样就可以获得每个文件的计数。 -c的{​​{1}}参数返回匹配数而不是每次匹配。

上面的表达式将计算其中包含“Hello”的行数。如果你需要Hellos的总数,而不仅仅是拥有Hello的行数,你需要做一些更复杂的事情。您可以使用grep上的grep选项打印一行的匹配部分,然后将其与-o组合以获取总出现次数。

答案 1 :(得分:0)

使用grep语法为:

grep -Rc "Hello" your_dir/

我还建议ack作为grep的绝佳替代品:

ack -lc "Hello" your_dir/