【发布时间】:2014-10-01 17:47:42
【问题描述】:
如何使用 ack 搜索特定文件类型的文件。
例如
ack -f .scss blah
acl -f .rb blah
显然上述方法不起作用,但是我如何使用 ack 来做到这一点?
【问题讨论】:
标签: ack
如何使用 ack 搜索特定文件类型的文件。
例如
ack -f .scss blah
acl -f .rb blah
显然上述方法不起作用,但是我如何使用 ack 来做到这一点?
【问题讨论】:
标签: ack
为此使用--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 扩展名的文件。
【讨论】:
find . -name '*.scss' | ack -x 'blah'
-x 从 STDIN 中读取要搜索的文件列表。
【讨论】:
简答:
ack blah --css
长答案:
您可以将文件类型添加到您的搜索中,以教 Ack 仅查看这些文件。例如,让 css 和 sass 扩展与 "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
【讨论】: