有没有办法让 ack 搜索文件名以 a 开头的文件.
(例如 .htaccess),而不使用--all
or--unrestricted
选项?
我尝试将以下内容添加到我的~/.ackrc
文件中无济于事:
--type-set=apache=.htaccess
似乎 ack 无法识别全是扩展名的文件名;也就是说,当您指定“.htaccess”的扩展名时,ack 只查找在该扩展名之前至少有一个字符的文件。
为了解决这个问题,您可以-u/--unrestricted
结合使用该-G regex
标志(将搜索限制为名称与正则表达式匹配的文件)。例如:
$ ack -u -G '\.htaccess' pattern
因为他们删除了@Sean 使用的两个标志
-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
你不能在 ack 1.x 中做到这一点。ack 2.0 将有更灵活的方式来指定文件。