Grep 使用ack在没有扩展名的文件中搜索

Grep 使用ack在没有扩展名的文件中搜索,grep,ack,Grep,Ack,我在文件FOO和FOO.cc中包含了一些文本“bar” 有没有办法告诉ack grep在没有扩展名的文件中搜索(即FOO) 我试过这样的方法: ack-grep --type-set=foo=FOO bar 它返回foo.cc中的文本,但不返回文件foo 我还将--type集添加到.ackrc文件中,调用 ack-grep --help-types 显示ack grep正在查找.FOO文件。您可以将ack grep的-a(搜索所有内容)与-G(仅搜索与给定正则表达式匹配的文件)。比如: ac

我在文件
FOO
FOO.cc
中包含了一些文本“bar”

有没有办法告诉
ack grep
在没有扩展名的文件中搜索(即
FOO

我试过这样的方法:

ack-grep --type-set=foo=FOO bar
它返回foo.cc中的文本,但不返回文件foo

我还将--type集添加到.ackrc文件中,调用

ack-grep --help-types

显示ack grep正在查找
.FOO
文件。

您可以将
ack grep
-a
(搜索所有内容)与
-G
(仅搜索与给定正则表达式匹配的文件)。比如:

ack-grep -a -G '^[^.]+$' what-to-search-for
我们应该做到这一点

在ack2下,您必须定义自定义类型:

ack-grep --WANTED --type-set WANTED:match:^[^.]+$ what-to-search-for

适合我。

你不能用ack 1.x做你想做的事。您需要升级到


ack 1.x无法处理没有扩展名的文件。ack 2.0增加了更灵活的文件规范系统。

我的ack是2.12版。下面的命令应该有效

$ ack --type-set make:is:Makefile --type=make string-pattern
同样地

$ ack --type-set foo:is:FOO --type=foo string-pattern

这只适用于ack 1.x。ack 2.0中的
-a
-G
标志已被删除,因为它们不再是必需的。@AndyLester说得好,谢谢。更新为ack2。(我认为ack1在这种情况下更为明显,但嘿。)