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

如何编写Bash递归脚本批量将照片序列转视频且跳过已存在任务

自动化转换Shell脚本

你可以直接在你的output根目录下创建并运行以下脚本:

#!/bin/bash

# 遍历所有data_前缀的数据集目录
for data_dir in data_*/; do
    # 去掉目录末尾的斜杠,提取数据集名
    data_name=$(basename "${data_dir%/}")
    
    # 遍历当前数据集下所有version_前缀的版本目录
    for version_dir in "${data_dir}"version_*/; do
        # 去掉目录末尾的斜杠,提取版本号
        version_name=$(basename "${version_dir%/}")
        # 构造目标视频文件名
        target_video="${version_dir}${data_name}_${version_name}.mov"
        # 构造photos目录路径
        photos_dir="${version_dir}photos/"

        # 校验目标视频是否已存在,存在则跳过当前版本
        if [ -f "${target_video}" ]; then
            echo "跳过已处理的版本:${data_name}/${version_name},视频已存在"
            continue
        fi

        # 校验photos目录是否存在
        if [ ! -d "${photos_dir}" ]; then
            echo "跳过异常版本:${data_name}/${version_name},未找到photos目录"
            continue
        fi

        # 执行ffmpeg转码
        echo "开始处理:${data_name}/${version_name}"
        ffmpeg -i "${photos_dir}%6d.jpg" -y "${target_video}"
        
        # 转码成功后才删除photos目录
        if [ $? -eq 0 ]; then
            echo "转码完成,删除原photos目录"
            rm -r "${photos_dir}"
        else
            echo "转码失败,保留photos目录,请检查错误信息"
        fi
    done
done
使用说明
  • 请将脚本保存为batch_convert.sh,放在你的output根目录下执行
  • 运行前先执行chmod +x batch_convert.sh给脚本添加执行权限
  • 脚本默认保留你原有的ffmpeg参数,如果你需要调整画质、编码格式可以自行在ffmpeg命令中添加对应参数
  • 新增了异常判断逻辑:photos目录不存在、转码失败的情况都会跳过删除操作,避免误删原始图片
  • 处理过程会打印对应日志,方便排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:09