我有一个目录树,其中包含一堆文件夹和子文件夹,以及这些子文件夹中的一堆文件。我需要在每个文件中获取" hello"一词的数量,并将结果显示为" file" a" hello" h hello'n times','file'b's hello'hello'm times'等等。如何在Linux中编写脚本,以便可以在每个文件中的每个文件中获取单词hello的单词。通过NET浏览后,我尝试了一些GREP组合,但这给了我所有文件夹中所有文件的总数。
谢谢
尝试这样的东西:
find . -type f | xargs -n1 grep "Hello" -c
将-type f
添加到find
中确保它仅返回文件,而不是目录。将-n1
添加到xargs
中,因此find
返回的每个文件都会获得grep
的调用,以便您可以获得每文件计数。-c
的grep
参数返回匹配项而不是每场比赛的计数。
上面的表达式将计算其中包含" Hello"的线的数量。如果您需要Hellos的总数,而不仅仅是在其中打招呼的线路数,则需要做一些更复杂的事情。您可以在GREP上使用-o
选项来打印行的匹配部分,然后将其与wc -l
结合以获取总出现的数量。
使用grep
语法为:
grep -Rc "Hello" your_dir/
我也建议ack
作为grep
的绝佳替代品:
ack -lc "Hello" your_dir/