2012-07-24 142 views
41

使用正常的grep命令,有一个--exclude选项(此处详细介绍:Use grep --exclude/--include syntax to not grep through certain files),可让您在进行擦除时忽略特定文件。如何从ack(ack-grep)中排除特定文件?

Ack的--type选项可以处理95%的您希望排除文件的情况,但它不会处理排除特定文件的情况(据我所知)。我有一个编译后的JS文件,其中包含其他每个JS文件的内容(在一行中),所以每当我为任何内容寻找时,我都会收回该巨大编译文件的全部内容。

我讨厌不得不放弃对ack并回到grep这个,但它真的是恼人。请有人告诉我,有一种方法可以从ack搜索中排除特定的文件。

回答

11

不,ack 1.x不会让你排除单个文件。在ack 2.0,你可以。 ack 2.0 当前在其第一个字母 现在是当前推荐的ack版本。

至于你的具体案例的缩小Javascript文件,你使用的是什么版本的ack? ack 1.96应忽略基于扩展名的缩小JavaScript。如果扩展检查不起作用,那么您可能会自行确认,因为它是一个单独的Perl程序。你可以破解is_searchable函数。

在ack 2.0中,我们正在考虑忽略任何超过500个字符的行,因为它显然不是源代码。

您可能还想加入我们的ack-users邮件列表。我们非常敏感。

+0

事实上,我的下一站将是ack邮件列表,但我想我会在这里首先检查以确保我没有错过某些明显的东西:-)谢谢Andy。 – machineghost 2012-07-24 21:48:00

+0

P.S.我选择了我编译的JS文件的文件名,所以目前它只是built.js。我会尝试将它重命名为built.min.js,看看是否有帮助。 – machineghost 2012-07-24 21:49:24

84

要忽略使用ACK 2.0单个文件,对 - 忽略文件标志提供一个过滤器规格:

--ignore-file=is:cljout.js

+1

什么是'在这里做'? – 2014-01-15 14:44:19

+3

准确文件名匹配。 http://beyondgrep.com/documentation/ack-2.04-man.html#is_filename – 2014-02-11 18:59:24

+4

这适用于我的文件名,但不是如果我想给一个特定的文件(即路径和文件名)。 – tremby 2014-03-07 18:34:51

1

还不错知道与ack2.0,你可以指定这些选项如果您必须经常过滤文件,则为.ackrc file

2

如果您运行的是ack --create-ackrc,它会输出一大堆用于缩小javascript,css和像node_modules和.git这样的常见文件的预设。很有用!如果要将此保存到.ackrc运行

ack --create-ackrc >> ~/.ackrc 

,然后删除你不从该文件需要

# minified Javascript 
--ignore-file=match:/[.-]min[.]js$/ 
--ignore-file=match:/[.]js[.]min$ 

这里是缩小的JS选项。

相关问题