使用正常grep
命令,有一个--exclude
选项(详见此处:Use grep --exclude/--include syntax to not grep through certain files),可让您在点击时忽略特定文件。
Ack的--type
选项可以处理95%你想要排除文件的情况,但它没有(据我所知)处理排除特定文件的情况。我有一个已编译的JS文件,其中包含其他所有JS文件的内容(在一行中),所以每当我grep for 任何时,我都会找回那个巨人编译的全部内容文件。
我不想放弃ack并回过头来讨论这个问题,但是真的很烦人。请有人告诉我,有一种方法可以从ack搜索中排除特定文件。
答案 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