【问题标题】:How to `find` within specific folders without walking present folders in a recursive search?如何在特定文件夹中“查找”而不在递归搜索中遍历当前文件夹?
【发布时间】:2014-03-02 07:22:04
【问题描述】:

在 shell 中,我一直使用带有 -path SomePath 等参数的 find 命令来查找特定路径中的文件,例如:

find . -name '*some_pattern*' -path a_subfolder

从它处理包含大量内容的文件夹开始,它似乎在遍历整个树并仅返回它在a_subfolder 中找到的匹配项。这当然是非常不可取的,因为它会花费大量时间来遍历树,而不是简单地直接进入 -path 参数定义的路径。

我可以将一些发现串在一起并专门在每个文件夹中查找,但我更希望有一个有凝聚力的 find 命令,它可以有效地遍历定义的树并避免当前路径中所有多余的其他路径。

您如何限制find 在定义的路径内专门搜索而不是它目前的工作方式?

【问题讨论】:

    标签: bash shell find sh zsh


    【解决方案1】:

    subfolder 中搜索some_pattern,无需递归:

    $ find /path/to/subfolder -maxdepth 1 -name '*some_pattern*'
    

    【讨论】:

      【解决方案2】:

      如何限制 find 在定义的路径中专门搜索

      只需提供预定义的路径列表即可找到第一个参数:

      find {my/path,another/path,some/path} -name '*some_pattern*'
      

      【讨论】:

      • 好电话。我根本没想过在第一条路径上将它们全部放在一起而不是使用参数选项(因为我习惯于使用 -not / ! arg 进行排除)。
      • 是的,我也很少看到在 find 的第一条路径中使用 glob。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 2012-09-21
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多