【问题标题】:get count of the word in all files获取所有文件中单词的计数
【发布时间】:2012-10-18 05:27:10
【问题描述】:

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

谢谢

【问题讨论】:

    标签: linux bash grep wc


    【解决方案1】:

    试试这样的:

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

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

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

    【讨论】:

    • 这看起来很适合查找包含“Hello”的的数量,但我仍然担心字符串在一行上出现多次的情况。在这种情况下,grep 只会计算一个。 @user1455116,这是你想要的吗?
    【解决方案2】:

    使用grep 的语法是:

    grep -Rc "Hello" your_dir/
    

    我还推荐ack 作为grep 的绝佳替代品:

    ack -lc "Hello" your_dir/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      相关资源
      最近更新 更多