我有一个目录树,其中有一堆文件夹和子文件夹以及这些子文件夹中的一堆文件。 我需要在每个文件中获得单词“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/