【问题标题】:ack|grep|whatnot special ignore folders pattern node_modules/dir/node_modulesack|grep|whatnot 特殊忽略文件夹模式 node_modules/dir/node_modules
【发布时间】:2016-11-13 03:59:55
【问题描述】:

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

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

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

注意:如果我在根 node_modules 文件夹下运行 find . -type f | ack -v 'node_modules|.git|dist',我会得到一个正确的文件列表。这是因为find . 给出了相对路径。有什么方法可以将此列表提供给 ack 吗?

【问题讨论】:

    标签: node.js grep node-modules ack


    【解决方案1】:
    ack -i <search-term> ./node_modules/*
    

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


    背景信息:

    ack 有许多规则可以忽略您通常不希望被搜索的文件内置

    至少从 2.14 版开始,此包括目录名为 .gitnode_modules,在任何层次结构级别(ack 默认递归搜索,但您可以添加 @987654327 @ / -R / --recursive 明确表示)。
    要查看默认忽略的目录/文件的完整列表,请运行ack --dump

    通过使用 globbing(路径名扩展)让 shell 将模式 ./node_modules/* 扩展为 list 中的实际项目 ./node_modulesnode_modules 的忽略规则绕过那些明确传递的项目。

    【讨论】:

      【解决方案2】:

      node_modulesack 的默认 --ignore-dir 列表中,用于 javascript。

      您可以使用 --noignore-dir 选项取消忽略 node_modules 来禁用此功能。

      • 直接在命令行上:

        % ack --noignore-dir=node_modules -i <search-term>
        
      • 在您的.ackrc 文件中:

        # in .ackrc
        --noignore-dir=node_modules
        

        影响所有搜索:

        % ack -i <search-term>
        

      【讨论】:

      • 我有点回答错误的问题,但我要把它留在这里,所以我稍后会找到这个......
      • 如果要专门搜索那个目录,可以指定,然后ack就不会忽略了,像这样:ack somestring node_modules
      猜你喜欢
      • 2015-02-17
      • 2020-05-28
      • 2018-01-12
      • 1970-01-01
      • 2019-01-09
      • 2015-07-01
      • 2012-08-07
      • 2020-10-25
      • 1970-01-01
      相关资源
      最近更新 更多