8

有没有办法让 ack 搜索文件名以 a 开头的文件.(例如 .htaccess),而不使用--allor--unrestricted选项?

我尝试将以下内容添加到我的~/.ackrc文件中无济于事:

--type-set=apache=.htaccess
4

3 回答 3

5

似乎 ack 无法识别全是扩展名的文件名;也就是说,当您指定“.htaccess”的扩展名时,ack 只查找在该扩展名之前至少有一个字符的文件。

为了解决这个问题,您可以-u/--unrestricted结合使用该-G regex标志(将搜索限制为名称与正则表达式匹配的文件)。例如:

$ ack -u -G '\.htaccess' pattern
于 2011-01-24T03:43:21.903 回答
1

更新了@Sean 对 Ack 2 的回答

因为他们删除了@Sean 使用的两个标志

ack 2 发行说明说:

-G 选项已被删除。命令行上的两种模式不明确。在此命令行中:

ack1 -G filepattern -i -w searchpattern

-i 和 -w 修改哪种模式?现在,使用 ack 2.0,您可以使用新的 -x 将文件名从一次 ack 调用传递到另一个。

ack2 -g -i filepattern | ack2 -x -w searchpattern

并且不再需要 -u (不受限制)标志。所以你想要的是:

ack -g "\.htaccess" | ack -x pattern

或者,就此而言,只需使用find生成文件列表(对于在 dotfolder 中查找文件特别有用):

find **/.hidden/complex-path/* | ack -x pattern
于 2016-02-01T06:18:55.677 回答
0

你不能在 ack 1.x 中做到这一点。ack 2.0 将有更灵活的方式来指定文件。

于 2011-01-24T15:10:56.070 回答