使用 ack 搜索没有扩展名的内部文件
Posted
技术标签:
【中文标题】使用 ack 搜索没有扩展名的内部文件【英文标题】:Using ack to search inside files with no extensions 【发布时间】:2013-07-19 16:48:49 【问题描述】:我在文件FOO
和foo.cc
中包含一些文本“栏”。
有没有办法告诉ack-grep
搜索没有扩展名的文件(即FOO
)?
我尝试过这样的事情:
ack-grep --type-set=foo=FOO bar
返回 foo.cc 中的文本,但不返回文件 FOO。
我还将 --type-set 添加到我的 .ackrc 文件中,调用
ack-grep --help-types
表明 ack-grep 正在寻找 .FOO
文件。
【问题讨论】:
【参考方案1】:我的确认是 2.12 版本。波纹管命令应该可以工作。
$ ack --type-set make:is:Makefile --type=make string-pattern
同样,
$ ack --type-set foo:is:FOO --type=foo string-pattern
【讨论】:
【参考方案2】:您可以将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。-a
和 -G
标志已在 ack 2.0 中删除,因为它们不再需要。
@AndyLester 好点,谢谢。更新了 ack2。 (我认为 ack1 在这种情况下更明显,但是嘿。)【参考方案3】:
你不能用 ack 1.x 做你想做的事。您需要升级到ack 2.0。
ack 1.x 没有办法处理没有扩展名的文件。 ack 2.0 增加了一个更加灵活的文件规范系统。
【讨论】:
以上是关于使用 ack 搜索没有扩展名的内部文件的主要内容,如果未能解决你的问题,请参考以下文章
错误 - 在Windows 7中使用“Git Bash Here”时,“文件扩展名.vbs没有脚本引擎”
.htaccess(500 内部服务器错误) - 删除 url 中的文件扩展名