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

如何在mkisofs成功生成ISO镜像后自动删除对应源文件夹

问题描述

批量处理多文件夹生成ISO镜像时,需要满足如下规则:

某文件夹对应ISO镜像生成成功后,立即删除该源文件夹,即:folder1 成功生成 folder1.iso 后,删除 folder1

现有批量生成ISO的Shell脚本未实现上述自动删除逻辑,原脚本如下:

for p in *;
do (
    cd "$p" && for d in */;
    do
        mkisofs -allow-limited-size -l -J -r -l -iso-level 3 -o "${d%/}.iso" "$d";
    done
);
done
修改后脚本

核心逻辑是仅在mkisofs命令执行成功(返回退出状态码0)时才执行源文件夹删除操作,同时补充异常场景容错处理,避免误删文件,修改后代码如下:

for p in *;
do (
    # 跳过非目录项,cd失败时直接终止当前子shell逻辑
    if [ -d "$p" ]; then
        cd "$p" || exit 1
        for d in */;
        do
            # 移除原命令重复传入的-l参数,执行ISO生成
            mkisofs -allow-limited-size -l -J -r -iso-level 3 -o "${d%/}.iso" "$d"
            # 仅当ISO生成成功时,删除对应源文件夹
            if [ $? -eq 0 ]; then
                rm -rf -- "$d"
            fi
        done
    fi
);
done
关键修改说明
  • 增加外层目录校验:遍历到的$p如果不是目录直接跳过,同时cd操作失败时立刻退出当前子shell,避免后续逻辑在错误路径执行导致文件误删
  • 清理冗余参数:移除了原mkisofs命令中重复传入的-l参数
  • 增加执行结果校验:通过$?获取mkisofs的退出状态,仅当命令执行成功(状态码为0)时才执行删除操作,避免ISO生成失败时丢失源文件夹数据
  • 删除操作增加--标识:兼容以-开头的文件夹名,避免rm将文件夹名识别为命令参数报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 20:57:28