我有ubuntu 14.04。并使用ack-grep 2.12在目录中递归搜索文件中的文本
我想设置ack-grep选项 特定于目录〜/ workspace / project / 所以,当我在路径〜/工作区/项目,并做ack' mypattern' 它以递归方式在所有子目录和子目录中以及递归地搜索所有文件。并打印结果。此外,我有一些子目录和一些宏子目录,以忽略其中的所有文件。
目前我的文件.ackrc为〜/ workspace / project / .ackrc
我写的是
--ignore-directory=is:node_modules/
--ignore-directory=is:public/bower_compoenents/
现在,当我搜索ack-grep'你好' 它还会从.ackrc
中搜索我指示给IGNORE的所有目录即使在.ackrc中使用此模式,它也会再次搜索被忽略的目录。 (PS:这在mac os x中完美运行[编辑:可能使用旧版本的ack])
--ignore-dir=node_modules/
--ignore-dir=public/bower_compoenents/
到目前为止,这些都没有起作用
--ignore-dir=public/bower_components
--ignore-dir=is:public/bower_components
我做错了吗?
编辑:寻找解决方案忽略在嵌套目录中搜索。 (我不想在命令行上执行ack-grep时提供任何特殊选项)
答案 0 :(得分:1)
- [no] ignore-dir = DIRNAME, - [no] ignore-directory = DIRNAME
忽略目录(因为忽略CVS,.svn等)。可以多次使用以忽略多个目录。例如,泥瓦匠用户可能希望包括--ignore-dir = data。 --noignore-dir选项允许用户搜索通常被忽略的目录(可能是为了研究.svn / props目录的内容)。
DIRNAME必须始终是一个简单的目录名称。不支持嵌套目录,如foo / bar。您需要指定--ignore-dir = foo,然后ack不会考虑来自任何foo目录的文件,除非在命令行中明确给出。
所以看起来你需要删除斜杠和嵌套目录。
你确定这适用于你的其他机器吗?该机器上有什么版本的ack?
答案 1 :(得分:1)
--ignore-dir=public/bower_compoenents
应该有效。但是,如果它是旧版本(早于1.93_02?),这在Ubuntu的ack版本中可能不起作用。下载更新的ack版本(我的是2.14)。
见这个帖子: