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

如何让Shell脚本自动遍历当前工作目录(CWD)下的子目录

自动遍历子目录的Shell脚本改造方案

没问题,我来帮你把脚本改成自动遍历当前目录下的所有子目录,不用再手动维护路径数组啦!针对你的Mac OSX环境,这里有两种适配方案,按需选择:

方案1:只遍历当前目录的直接子目录(和原脚本逻辑一致)

把原来的手动数组替换成自动匹配逻辑,同时保留绝对路径的使用习惯,改造后的脚本如下:

#!/bin/sh

# 遍历当前目录下的所有直接子目录
for subdir in */; do
    # 安全判断:确保当前条目是有效目录(避免无匹配时通配符被原样输出)
    if [ -d "$subdir" ]; then
        # 将相对路径转换为绝对路径,和原脚本的路径格式保持一致
        abs_subdir=$(cd "$subdir" && pwd)
        echo "Processing directory: $abs_subdir"
        # 执行你的Python脚本,传入绝对路径参数
        python /path/to/pythonscript1.py "$abs_subdir"
        python /path/to/pythonscript2.py "$abs_subdir"
    fi
done

关键说明:

  • */ 是Shell通配符,会自动匹配当前目录下所有以/结尾的条目,也就是所有直接子目录
  • if [ -d "$subdir" ]; then 是容错处理:如果当前目录没有任何子目录,*/会被当作字符串直接返回,这一步会跳过无效条目,避免报错
  • $(cd "$subdir" && pwd) 用来把相对路径转成绝对路径,确保和你原脚本的参数格式一致,Python脚本无需修改

方案2:递归遍历所有嵌套子目录(如果需要处理深层目录)

如果你需要处理folder1下所有层级的子目录,用find命令更合适:

#!/bin/sh

# 递归遍历当前目录下的所有子目录(排除当前目录本身)
find . -type d -mindepth 1 | while read -r subdir; do
    abs_subdir=$(cd "$subdir" && pwd)
    echo "Processing directory: $abs_subdir"
    python /path/to/pythonscript1.py "$abs_subdir"
    python /path/to/pythonscript2.py "$abs_subdir"
done

关键说明:

  • -type d 指定只查找目录
  • -mindepth 1 排除当前目录.
  • 去掉-maxdepth 1就会递归遍历所有层级的子目录,如果只想遍历直接子目录,加上-maxdepth 1即可

使用方法

  1. 把改造后的脚本保存为shellscript.sh
  2. 给脚本添加执行权限:chmod +x shellscript.sh
  3. 终端中切换到folder1目录:cd /path/folder1
  4. 运行脚本:./shellscript.sh 或者 sh shellscript.sh

小提示

如果你的Mac上默认Python是Python2(OSX 10.13自带的是Python2.7),而你的脚本需要Python3,记得把脚本里的python改成python3哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:23:26