You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用`find . -depth 1 -type d`遍历目录时出错求助

解决find: paths must precede expression: '1'错误

错误根源

你搞混了find的选项用法:-depth是控制遍历顺序的开关(让find先处理子目录再处理父目录,即深度优先遍历),它不需要跟任何数值参数。而你想要限制只搜索当前目录下一级的目录,对应的正确选项是-maxdepth 1。

当你写-depth 1时,find会把1识别成一个路径参数,但它出现在选项之后,违反了find“路径必须在表达式/选项参数之前”的规则,因此抛出了这个错误。

修正方案

基础修复

把错误的-depth 1替换成-maxdepth 1即可:

for dir in `find . -maxdepth 1 -type d`
do
    # 你的业务逻辑代码
done

更健壮的写法(推荐)

用反引号捕获命令输出时,如果目录名包含空格、换行符等特殊字符会出问题,建议改用while read的方式处理:

find . -maxdepth 1 -type d | while read -r dir
do
    # 你的业务逻辑代码
done

兼容老版本find的备选方案

如果是在BSD系系统(比如macOS)或者使用非常老的find版本,-maxdepth可能不支持,可以用-prune实现相同效果:

find . -type d -name . -o -prune -type d

内容的提问来源于stack exchange,提问作者wardz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:40:36