-maxdepth 和 -mindepth 可精准控制 find 搜索层级:-maxdepth 1 实现非递归查找,-mindepth 跳过浅层目录,二者组合能限定深度区间,如 -mindepth 2 -maxdepth 2 严格查找第二层子目录中的普通文件。

用 -maxdepth 和 -mindepth 就能精准控制 find 的搜索层级,避免遍历过深浪费时间,也防止漏掉目标层。
限制最大搜索深度(-maxdepth)
这个选项指定从起始目录开始,最多往下进入几层子目录。层数从 1 开始计:起始目录算第 1 层,它的直接子目录是第 2 层,依此类推。
-
find . -maxdepth 1 -name "*.conf":只在当前目录(不进任何子目录)找 .conf 文件 -
find /etc -maxdepth 2 -type d -name "ssl":在 /etc 及其一级子目录里找名为 ssl 的目录 -
find ~/Documents -maxdepth 3 -size +10M:在 Documents 及其下两层子目录内找大于 10MB 的文件
限制最小搜索深度(-mindepth)
这个选项跳过较浅的层级,强制只在指定深度及更深的位置查找。它常和 -maxdepth 配合使用,圈定一个“深度区间”。
-
find /var -mindepth 2 -name "error.log":跳过 /var 本身和 /var 下的直接子目录,只查二级及更深层级里的 error.log -
find . -mindepth 2 -maxdepth 2 -type f:严格限定在当前目录的“第二层子目录”中找普通文件(即只查孙子目录,不查当前目录和子目录) -
find /home -mindepth 3 -name ".bashrc":只在用户家目录下的三级子路径中找 .bashrc,比如 /home/alex/projects/config/.bashrc
深度控制的常见组合技巧
单独用 -maxdepth 1 是最常用的操作,等效于“非递归查找”,比 ls | grep 更可靠;而 -mindepth 多用于排除顶层干扰项。
- 想查某目录下所有子目录(不含自身),用
-mindepth 1 -maxdepth 1 -type d - 排除某个特定层级(如跳过第一层但保留更深的),可搭配
-prune,但-mindepth更直观 - 注意:
-maxdepth必须紧接在路径后、其他条件前,否则可能被忽略或报错 - 深度数值是整数,不能为 0;
-maxdepth 0无效,-mindepth 0等价于不设限

















