在所有文件中获得单词的数量

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

谢谢

尝试这样的事情:

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

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

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

使用grep的语法是:

 grep -Rc "Hello" your_dir/ 

我也推荐ack作为grep的优秀替代品:

 ack -lc "Hello" your_dir/