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

如何在Shell脚本或Python中批量给MP4文件按序添加序号前缀?

给MP4文件批量添加序号前缀的解决方案

一、Shell脚本修复与说明

你的原脚本有几个问题导致结果不符合预期:

  • 变量n被设为字符串01,直接写n+01只会拼接成01+01,不会执行数值加法
  • 变量替换语法错误,应该是${f%.mp4}而非{f%.mp4},而且这么写会丢失原文件的.mp4后缀,其实直接用$f就能保留完整原文件名
  • 序号没有正确递增,需要用数值运算更新n

修正后的Shell脚本:

n=1
for f in *.mp4; do
    # 把序号格式化为两位数字,不足补0
    new_name=$(printf "%02d. %s" "$n" "$f")
    # 重命名文件,-- 避免文件名以-开头时出错
    mv -- "$f" "$new_name"
    # 序号递增
    n=$((n+1))
done

关键说明:

  • printf "%02d. %s":%02d确保序号是两位(比如1变成01,12保持12),%s直接用原文件名,保留所有后缀和特殊字符
  • mv -- "$f" "$new_name":双引号包裹文件名,避免文件名含空格、特殊字符时出错;--处理文件名以-开头的情况
  • n=$((n+1)):用数值运算让序号每次加1

二、Python实现方案

如果你更熟悉Python,这个方案更易读且跨平台:

import os

# 获取当前目录下所有mp4文件,按文件名排序(保证顺序稳定)
mp4_files = sorted(f for f in os.listdir('.') if f.endswith('.mp4'))

# 从1开始给文件加序号前缀
for idx, filename in enumerate(mp4_files, start=1):
    # 格式化序号为两位数字,拼接原文件名
    new_filename = f"{idx:02d}. {filename}"
    # 执行重命名
    os.rename(filename, new_filename)

关键说明:

  • sorted(...):对文件列表排序,确保序号和文件名的顺序一致;如果想按文件创建时间排序,可以改成:
    mp4_files = sorted(
        [f for f in os.listdir('.') if f.endswith('.mp4')],
        key=lambda x: os.path.getctime(x)
    )
    
  • enumerate(..., start=1):直接从1开始计数,不用手动维护序号变量
  • f"{idx:02d}. {filename}":用f-string快速格式化,语法简洁直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:40:31