我基本上只想做ack foo *.citrus并让 ack 向下钻取并在当前目录及以下目录的所有 Citrus 文件中找到字符串 'foo'。问题是如果当前目录中没有任何 Citrus 文件,这将不起作用。
我尝试弄乱-G没有成功。我真的需要在 .ackrc 中添加一个文件类型只是为了将搜索限制为具有给定扩展名的文件吗?
我基本上只想做ack foo *.citrus并让 ack 向下钻取并在当前目录及以下目录的所有 Citrus 文件中找到字符串 'foo'。问题是如果当前目录中没有任何 Citrus 文件,这将不起作用。
我尝试弄乱-G没有成功。我真的需要在 .ackrc 中添加一个文件类型只是为了将搜索限制为具有给定扩展名的文件吗?
正如 Andy Lester 所建议的,您还可以创建一个排版,而无需麻烦地将其添加到您的.ackrc文件中:
ack --type-set=cit=.citrus --cit "foo"
默认情况下,ack只搜索已知类型的文件(如 *.java、*.cpp 等)。它不知道文件 *.citrus,因此要在此类文件中搜索,您必须使用-acmd 行开关:
$ack -a -G '\.citrus$' foo
1.d/1.citrus
1:foo_bar
如果你不想,你不必在 .ackrc 中设置它。您还可以在您的环境中设置 ACK_OPTIONS,或在命令行上指定 --type-set 参数。ack 不在乎。