【问题标题】:search for a specific file type with ack使用 ack 搜索特定的文件类型
【发布时间】:2014-10-01 17:47:42
【问题描述】:

如何使用 ack 搜索特定文件类型的文件。

例如

ack -f .scss blah
acl -f .rb blah

显然上述方法不起作用,但是我如何使用 ack 来做到这一点?

【问题讨论】:

    标签: ack


    【解决方案1】:

    为此使用--type。例如仅搜索 python 文件:

    ack --type=python searchthis
    

    列出所有支持的类型

    ack --help=types  # ack 2.x
    ack --help-types  # ack 3.x.x
    

    如果你想创建一个自定义类型,添加类似这样的东西到 ~/.ackrc:

    --type-add=custom:ext:rb
    --type-set
    

    然后您可以使用 --type=custom 和 ack 来搜索带有 .rb 扩展名的文件。

    【讨论】:

      【解决方案2】:
      find . -name '*.scss' | ack -x 'blah'
      

      -x 从 STDIN 中读取要搜索的文件列表。

      【讨论】:

        【解决方案3】:

        简答:

        ack blah --css
        

        长答案:

        您可以将文件类型添加到您的搜索中,以教 Ack 仅查看这些文件。例如,让 csssass 扩展与 "stylesheets" 短名称相关联:

        ack --type-add=stylesheets:ext:css,sass
        

        现在您已经教 Ack 搜索要与 "stylesheets" 短名称关联的文件类型,您可以要求 Ack 使用该短名称:

        ack --type-add=stylesheets:ext:css,sass --type=stylesheets blah
        

        或者用捷径:

        ack --type-add=stylesheets:ext:css,sass --stylesheets blah
        

        即使是简短的方式,搜索时也需要输入很多内容,这就是此类命令更适合用于~/.ackrc 之类的配置文件的原因,但我更喜欢在@987654326 中将它们与别名一起使用@。

        但为什么它默认使用--type=css--css?因为 Ack 有一个默认的文件名组,您可以使用 ack --dump 转储。

        使用 Ack 版本:2.24

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-12
          相关资源
          最近更新 更多