如何从ack(ack-grep)中排除特定文件?

时间:2012-07-24 17:21:49

标签: ack

使用正常grep命令,有一个--exclude选项(详见此处:Use grep --exclude/--include syntax to not grep through certain files),可让您在点击时忽略特定文件。

Ack的--type选项可以处理95%你想要排除文件的情况,但它没有(据我所知)处理排除特定文件的情况。我有一个已编译的JS文件,其中包含其他所有JS文件的内容(在一行中),所以每当我grep for 任何时,我都会找回那个巨人编译的全部内容文件。

我不想放弃ack并回过头来讨论这个问题,但是真的很烦人。请有人告诉我,有一种方法可以从ack搜索中排除特定文件。

5 个答案:

答案 0 :(得分:97)

要使用ack 2.0忽略单个文件,请为--ignore-file标志提供过滤规范:

--ignore-file=is:cljout.js

答案 1 :(得分:10)

不,ack 1.x不允许您排除单个文件。在ack 2.0中,您可以。 ack 2.0 目前处于第一个alpha ,现在是当前推荐的ack版本。

至于您缩小的Javascript文件的具体情况,您使用的是什么版本的ack? ack 1.96应该忽略基于扩展的缩小JavaScript。如果扩展检查不起作用,你可能会破解ack本身,因为它是一个单独的Perl程序。您可以破解is_searchable功能。

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

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

答案 2 :(得分:9)

如果你运行ack --create-ackrc,它将为常见文件输出一大堆预设,例如minified javascript,css和node_modules和.git等目录。非常有用!

这里是缩小的js选项:

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

如果要将其保存到.ackrc运行

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

然后从该文件中删除您不需要的内容。

答案 3 :(得分:1)

使用ack2.0也很有用,如果您经常过滤文件,可以在.ackrc file中指定这些选项。

答案 4 :(得分:1)

如果要排除特定文件夹,以下命令可以帮助您:

ack keywords --ignore-dir folder_name

man ack将提供更多详情:)

  

- [no] ignore-dir = DIRNAME, - [no] ignore-directory = DIRNAME

     

- 忽略文件=过滤式:的filterExpr