指定文件模式时 ack 不会递归

指定文件模式时 ack 不会递归
ack "#define" 

将递归到子目录中并查找包含 #define 的文件。但我想将搜索限制在 *.h 文件中,所以我尝试了

ack "#define" *.h

并且不再递归。唯一的结果来自工作目录中的文件。

版本:

ack 1.96 在 /usr/bin/perl 上的 Perl 5.14.2 下运行

答案1

通配符*.h通过你的外壳进行扩展, 和确认仅接收单个文件作为其参数 – 它没有任何地方可以递归。

为了避免这种情况,请在单引号或双引号内指定通配符,但确认可能不会将其识别为通配符:ack "#define" "*.h"

更好的选择是使用--hh仅包含头文件(参见--help type), 或者-G '\.h$'仅包含与指定 Perl 正则表达式匹配的文件。

相关内容