代码之家  ›  专栏  ›  技术社区  ›  Johan Kotlinski

是否有一些Unix util允许我只需少量键入即可grep多个文件?

  •  6
  • Johan Kotlinski  · 技术社区  · 15 年前

    现在我经常这样做:

    find * | grep py$ | xargs grep foo
    

    更新:如果可能的话,我更喜欢使用bashshell。

    8 回复  |  直到 15 年前
        1
  •  14
  •   dfa    15 年前

    我爱 ack :

    $ grep pattern $(find . -type f | grep -v '\.svn')

    $ ack pattern

        2
  •  4
  •   Brian Agnew    15 年前

    你可能会发现你的贝壳对你有帮助。例如,在 zsh ,你能做什么

    grep foo **/*.py
    

    如果.py文件数不超过命令允许的最大参数数(64k?)。注:您可以对文件进行限定,例如:。

    grep foo **/*.py(mh-5)
    

    这将使您在过去5小时内修改所有内容。

        3
  •  3
  •   Aditya Sehgal    15 年前

    你试过了吗 ack .

        4
  •  2
  •   Eric Wendelin    15 年前

    zsh具有递归全局搜索功能,因此您可以

    grep foo **/*.py
    

    看,妈,没找到:)

    更新:哦,如果你做了很多事情,那么alias或者为它编写函数当然不会有什么坏处

        5
  •  2
  •   jitter    15 年前

    当前目录中的所有py

    grep -R foo *.py
    

    grep -R foo .
    
        6
  •  1
  •   Pierre    15 年前
    find . -name "*.py" -exec grep -H foo '{}' ';'
    
        7
  •  1
  •   chaos    15 年前
    grep -r --include='*.py' foo *
    
        8
  •  0
  •   Michael H.    15 年前

    我经常使用类似于find/grep对的东西,尽管有更多的条件——例如,排除.svn目录中的文件。我经常这样做,我只是围绕这些调用编写脚本,所以我可以调用“src grep…”,让它基本上完成您在这里所做的工作。(然后我添加了一个可选的扩展,用于传递给grep-C标志(如果提供的话)的许多上下文行,以及一个单独的版本,用于grep定义语句的结果。)