使用ack搜索特定文件类型

31

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

例如:

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

显然,上面的方法行不通。但是我该如何用ack来实现呢?

3个回答

34

使用 --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

您可以使用ack命令的--type=custom选项,仅搜索扩展名为.rb的文件。


16
find . -name '*.scss' | ack -x 'blah'

-x 从标准输入中读取要搜索的文件列表。


10

简短回答:

ack blah --css

长篇回答:

你可以在搜索时添加文件类型,让Ack只在这些文件中查找。例如,我们将csssass扩展名与"stylesheets"短名称关联起来:

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

现在你已经告诉Ack,你想要搜索与"样式表"短名称相关联的文件类型,你可以使用以下命令让Ack使用该短名称:

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

或者使用简洁的方式:

ack --type-add=stylesheets:ext:css,sass --stylesheets blah
即使是短命令,输入内容也很多,这就是为什么这些类型的命令最好用在像 ~/.ackrc 这样的配置文件中,但我更喜欢在我的 ~/.bashrc 中使用它们的别名。
但为什么 --type=css 或者 --css 默认情况下可以使用呢?因为 Ack 有一个默认的文件名组,可以通过 ack --dump 命令进行转储。
使用的 Ack 版本为:2.24。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接