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

求助:按文件名特定片段创建文件夹并用ffmpeg拼接对应目录ts视频文件

ts文件批量归档+合并解决方案

前置说明

默认你的ts文件命名规则为:[4位随机字符][3位序号]3000[剩余字符].ts,如果实际序号的位置/长度有差异,调整后续命令中的字符串截取参数即可。

1. 按序号归档文件到对应目录

修改你提供的参考代码,适配ts文件和序号提取规则:

find . -type f -name "*.ts" -maxdepth 1 -exec bash -c '
  # 提取前4位之后的3位字符作为序号
  seq_no="${0:4:3}"
  mkdir -p "$seq_no"
  mv "$0" "$seq_no/"
' {} \;

命令说明:

  • 只检索当前目录下的.ts格式文件
  • 从每个文件名第4位(下标从0开始计数)开始截取3位作为序号,创建对应序号命名的文件夹
  • 将匹配的ts文件移动到对应序号文件夹内

2. 批量合并每个文件夹下的ts文件

执行以下脚本完成按文件名排序拼接,输出命名符合要求的合并文件:

# 遍历所有序号文件夹
for dir in [0-9][0-9][0-9]/; do
  # 去掉文件夹路径末尾的斜杠,得到序号
  seq_no="${dir%/}"
  # 进入对应文件夹
  cd "$dir" || continue
  # 按文件名自然排序生成ffmpeg所需的文件列表
  printf "file '%s'\n" *.ts | sort > filelist.txt
  # 调用ffmpeg拼接,输出文件名为 序号+merged.ts
  ffmpeg -f concat -safe 0 -i filelist.txt -c copy "${seq_no}merged.ts"
  # 清理临时文件列表,不需要可以注释掉
  rm filelist.txt
  # 返回上级目录
  cd ..
done

命令说明:

  • 自动识别所有3位数字命名的序号文件夹
  • 对每个文件夹内的ts文件按文件名自然升序排序,保证拼接顺序正确
  • 用ffmpeg的concat模式直接复制流拼接,无需重新编码,速度极快
  • 输出文件自动命名为[序号]merged.ts,存放在对应序号文件夹内

注意事项

  • 执行所有命令前请先备份原文件,先拿3-5个测试文件验证规则匹配正确再全量执行
  • 如果你的序号不是3位、也不是紧跟在4位随机字符之后,只需调整第一步中seq_no="${0:4:3}"的截取参数:${变量:起始下标:截取长度}即可
  • 运行前请确保系统已安装ffmpeg工具

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:27:02