2016-11-13 43 views
2

我最近ACK发现并ack -ir --ignore-dir={node_modules,dist,.git} <search-term>的伟大工程,对于大多数的事情,但这个ACK见| grep |诸如此类的特殊忽略文件夹模式node_modules/DIR/node_modules

---node_modules/ 
---------------project1/ 
-----------------------node_modules/ 
---------------project2/ 
-----------------------node_modules/ 

我想搜索下的“根”的所有文件node_modules并排除所有内部节点。

注意:如果我在根node_modules文件夹下运行find . -type f | ack -v 'node_modules|.git|dist',我会得到一个正确的文件列表。发生这种情况是因为find .给出了相对路径。任何方式来喂这个列表来确认?

回答

3
ack -i <search-term> ./node_modules/* 

应该做你想做的。 如果您还想包含隐藏文件和文件夹,请首先设置shopt -s dotglob(假设Bash)。


背景资料:

ack有忽略,你通常不会想要搜索建于文件很多规则。

由于至少2.14版本,这包括目录名为.gitnode_modules,在层次结构的任何级别(ack递归搜索默认情况下,虽然你可能添加-r/-R/--recursive,使显式)。
要查看默认情况下忽略的目录/文件的完整列表,请运行ack --dump

通过使用通配符(路径扩展)让拓展模式./node_modules/*实际项目列表./node_modules,为node_modules忽略规则绕过那些明确传递物品。