使用 ack 搜索没有扩展名的内部文件

Posted

技术标签:

【中文标题】使用 ack 搜索没有扩展名的内部文件【英文标题】:Using ack to search inside files with no extensions 【发布时间】:2013-07-19 16:48:49 【问题描述】:

我在文件FOOfoo.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 中的文件扩展名

如何在 Visual Studio Code 中列出/搜索特定类型的所有文件

vscode打开html文件可能没有权限