ack|grep|whatnot特殊忽略文件夹模式node_modules/dir/node_modules的含义是什么?

5

我最近发现了ack,ack -ir --ignore-dir={node_modules,dist,.git} <search-term> 对大多数情况都很适用,但是这个

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

我想搜索“root”下的所有文件,但要排除所有内部文件夹。
注意:如果我在根node_modules文件夹下运行find . -type f | ack -v 'node_modules|.git|dist',我会获得一个适当的文件列表。这是因为find .提供相对路径。有什么方法可以将此列表提供给ack?
2个回答

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

应该做你想要的事情。 如果您想要包括隐藏文件和文件夹,也可以先设置shopt -s dotglob(假设使用Bash)。


背景信息:

ack内置了许多忽略不需要搜索的文件的规则。

至少从版本2.14开始,这些规则包括命名为.gitnode_modules的目录,无论在层次结构的哪个级别上(ack默认递归搜索,但您可以添加-r / -R / --recursive来明确指定)。
要查看默认忽略的完整目录/文件列表,请运行ack --dump

通过使用globbing(路径名扩展)让shell将模式./node_modules/*扩展为实际项目./node_modules中的列表,可以为那些显式传递的项目绕过node_modules的忽略规则。


6

node_modules 是在 ack 执行 JavaScript 时默认的 --ignore-dir 列表中。

您可以使用 --noignore-dir 选项来取消忽略 node_modules

  • directly on the command line:

    % ack --noignore-dir=node_modules -i <search-term>
    
  • in your .ackrc file:

    # in .ackrc
    --noignore-dir=node_modules
    

    which affects all searches:

    % ack -i <search-term>
    

我有点回答了错误的问题,但我会把它留在这里,以便以后找到它... - spazm
1
如果你想在特定的目录中进行搜索,可以指定它,然后ack就不会忽略它,像这样:ack somestring node_modules - Andy Lester

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接