-maxdepth 1 可严格限制 find 只搜索当前目录不进入子目录,该选项必须紧接路径参数后;它将深度限定为1级(.为0层,其直接子项为1层),不递归进入子目录但会列出子目录名。

用 -maxdepth 1 就能严格限制 find 只查当前目录,不进任何子目录。
这个选项必须紧接在路径参数之后,比如 find . -maxdepth 1 -name "*.log"。如果写成 find -maxdepth 1 . -name "*.log",多数 shell 会报错或行为异常——因为 find 要求深度限制选项出现在路径之后、其他测试条件之前[^1]。
-maxdepth 1 的含义
它把搜索“深度”限定为 1 级:. 自身算第 0 层,当前目录下的所有直接子项(文件、子目录、符号链接等)属于第 1 层;再往下的内容就完全跳过。注意,它不会排除子目录本身(即子目录名会被列出),但不会进入它们内部查找。
常见错误与替代方案
-
-maxdepth 0只匹配路径本身(即只输出.),不是你想要的效果。 - 用
ls | grep或glob(如*.txt)虽简单,但无法使用find的高级能力,比如按修改时间、权限、文件类型(-type f)、大小(-size)等筛选。 -
-prune也能实现类似效果,但写法更绕,且易出错,不适合日常快速操作。
安全建议
执行 -delete 前务必先加 -print 预览结果:
find . -maxdepth 1 -name "*.tmp" -print # 确认无误后再删 find . -maxdepth 1 -name "*.tmp" -delete
这样既保留 find 的全部筛选能力,又避免误操作。











