我可以根据文件名而不是扩展名创建一个ack文件类型吗?

时间:2011-04-07 13:01:17

标签: ack

我想在我的ack搜索中包含具有特定名称的文件 - 而不是扩展名。这有可能用ack吗?

如果我使用-G选项,则会排除所有其他文件类型。 (所以我不能把它放在我的.ackrc文件中。)

我尝试使用--type-set mytype=filename.txt但这仅适用于扩展程序,因此会搜索包含模式.filename.txt的文件,因此找不到filename.txt。 (这也是ack --help types显示的内容:--mytype .filename.txt,而不是--mytype filename.txt。)

有人有什么想法吗?

4 个答案:

答案 0 :(得分:11)

man ack表示要搜索的文件可以通过标准输入给出 所以这应该有效:

find . -name filename.txt | ack PATTERN -

不幸的是,事实并非如此。它提供ack: Ignoring 1 argument on the command-line while acting as a filter.,显然是bug in ack。当这个错误will be fixed时,我们应该可以使用

find . -name filename.txt | ack --nofilter PATTERN -

答案 1 :(得分:6)

如果您使用zsh

,也可以这样做

ack 'Pattern' **/filename.txt

答案 2 :(得分:3)

你问的是“我可以制作一个ack根据文件名识别的文件类型”,答案是“不,不是在ack 1.x,但你可以在ack 2.0”。 ack 2.0处于alpha版本,我们希望在圣诞节前获得测试版。

正如@Christian在上面指出的那样,您可以在命令行中指定给定的文件名,但是完全绕过文件类型检查。

答案 3 :(得分:1)

我知道这是一个迟到的回复,但你可以在运行ack时简单地指定文件名吗?

ack 'My Text' filename.txt