📜  Linux find() 命令中的 mindepth 和 maxdepth 用于将搜索限制到特定目录。

📅  最后修改于: 2022-05-13 01:56:11.450000             🧑  作者: Mango

Linux find() 命令中的 mindepth 和 maxdepth 用于将搜索限制到特定目录。

Linux中如何限制搜索指定目录?
Linux 中有一个命令可以在称为'find'的目录层次结构中搜索文件。它根据优先级规则,通过从左到右评估给定的表达式,搜索以每个给定起点为根的目录树,直到结果已知(左侧为 false for and 操作,true for or) ,此时 find 移动到下一个文件名。如果没有指定起始点,则`.'假设。
默认情况下,find 命令会递归地向下遍历整个目录树,这既耗时又耗费资源。但是可以指定目录遍历的深度(分别是mindepthmaxdepth )。

什么是 mindepth 和 maxdepth 级别?

  • maxdepth levels :在起始点以下的目录的大多数级别(非负整数)级别下降。 -maxdepth 0表示仅将测试和操作应用于起点本身。
  • mindepth levels :不要在低于级别(非负整数)的级别上应用任何测试或操作。 -mindepth 1 表示处理除起点之外的所有文件。

下面给出一些示例来说明如何使用mindepthmaxdepth 指定目录遍历的深度

  • 在从根目录开始的所有子目录下找到passwd文件。
    find / -name passwd

    步骤 1-1

  • 在 root 下找到下一级的 passwd 文件。 (即 root — 级别 1,以及一个子目录 — 级别 2)
    find / -maxdepth 2 -name passwd

  • 找到root下两级下的passwd文件。 (即 root — 级别 1,以及两个子目录 — 级别 2 和 3 )
    find / -maxdepth 3 -name passwd

  • 在子目录级别 2 和 4 之间找到密码文件。
    find / -mindepth 3 -maxdepth 5 -name passwd

还有另外两种方法可以限制在 linux 中搜索目录:



  1. 格雷普
  2. Grep 搜索命名输入文件(或标准输入,如果没有文件被命名,或文件名 - 已给)包含匹配给定 PATTERN 的行。默认情况下,grep 打印匹配的行。

    grep 的例子:

    您可以使用 grep 搜索当前目录,如下所示: 检查目录是否存在找到根目录下的目录。 在根目录下找到下一级的目录。

  3. ack Ack 旨在替代 99% 的 grep 用途。 Ack 搜索命名输入文件(或标准输入,如果没有文件被命名,或文件名 - 已给)包含匹配给定 PATTERN 的行。默认情况下, ack 打印匹配的行。
    Ack 还可以列出将要搜索的文件,而无需实际搜索它们,以便您利用 ack 的文件类型过滤功能。 Ack 没有最大深度选项

    确认示例:

    检查根目录下的特定目录

    参考:Linux 手册页