Linux find() 命令中的 mindepth 和 maxdepth 用于将搜索限制到特定目录。
Linux中如何限制搜索指定目录?
Linux 中有一个命令可以在称为'find'的目录层次结构中搜索文件。它根据优先级规则,通过从左到右评估给定的表达式,搜索以每个给定起点为根的目录树,直到结果已知(左侧为 false for and 操作,true for or) ,此时 find 移动到下一个文件名。如果没有指定起始点,则`.'假设。
默认情况下,find 命令会递归地向下遍历整个目录树,这既耗时又耗费资源。但是可以指定目录遍历的深度(分别是mindepth和maxdepth )。
什么是 mindepth 和 maxdepth 级别?
- maxdepth levels :在起始点以下的目录的大多数级别(非负整数)级别下降。 -maxdepth 0表示仅将测试和操作应用于起点本身。
- mindepth levels :不要在低于级别(非负整数)的级别上应用任何测试或操作。 -mindepth 1 表示处理除起点之外的所有文件。
下面给出一些示例来说明如何使用mindepth和maxdepth 指定目录遍历的深度
- 在从根目录开始的所有子目录下找到passwd文件。
find / -name passwd
- 在 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 中搜索目录:
- 格雷普 Grep 搜索命名输入文件(或标准输入,如果没有文件被命名,或文件名 - 已给)包含匹配给定 PATTERN 的行。默认情况下,grep 打印匹配的行。
- ack Ack 旨在替代 99% 的 grep 用途。 Ack 搜索命名输入文件(或标准输入,如果没有文件被命名,或文件名 - 已给)包含匹配给定 PATTERN 的行。默认情况下, ack 打印匹配的行。
Ack 还可以列出将要搜索的文件,而无需实际搜索它们,以便您利用 ack 的文件类型过滤功能。 Ack 没有最大深度选项确认示例:
检查根目录下的特定目录
参考:Linux 手册页
grep 的例子:
您可以使用 grep 搜索当前目录,如下所示: 检查目录是否存在找到根目录下的目录。 在根目录下找到下一级的目录。