可按指定规则批量重命名GoPro文件的Bash脚本
GoPro自定义规则批量重命名Bash脚本
以下脚本可直接实现你需要的重命名逻辑,默认带预览模式,确认结果正确后再执行实际重命名,避免误改文件。
脚本代码
#!/bin/bash # 遍历当前目录下所有MP4/mp4后缀的文件 for file in *.{MP4,mp4}; do # 通配符无匹配时跳过,避免报错 [ -e "$file" ] || continue # 拆分文件名主体和扩展名 main_name="${file%.*}" ext="${file##*.}" # 文件名长度校验,不符合GoPro命名规则的文件直接跳过 if [ ${#main_name} -lt 13 ]; then echo "跳过文件 $file:文件名长度不符合规则" continue fi # 按位置拆分文件名各段 prefix="${main_name:0:2}" # 取前2位字符 move_segment="${main_name:2:2}" # 取第3-4位字符(bash字符串索引从0开始) middle="${main_name:4:8}" # 取第5位开始的8位字符 suffix="${main_name:12}" # 取第13位到末尾的所有字符 # 按规则拼接新文件名 new_name="${prefix}${middle}-${move_segment}-${suffix}.${ext}" # 【预览模式】仅打印重命名对应关系,不实际修改文件 echo "重命名映射:$file → $new_name" # 【实际执行】确认预览结果正确后,注释上面的echo行,取消下面行的注释即可真实重命名 # mv -n -- "$file" "$new_name" done
使用步骤
- 将上述代码保存为
rename_gopro.sh,放到存放GoPro视频的目录下 - 执行命令给脚本添加运行权限:
chmod +x rename_gopro.sh - 执行
./rename_gopro.sh,终端会打印所有文件的重命名对应关系,逐行核对是否符合预期 - 确认所有映射关系无误后,编辑脚本文件,注释echo打印行,取消
mv命令行的注释,再次执行脚本即可完成批量重命名
安全提示:脚本中
mv命令添加了-n参数,遇到同名文件时不会强制覆盖,可避免文件误覆盖丢失。
规则匹配验证
用你提供的样例测试:
- 原文件名:
GX010112_1647792633961.MP4 - 拆分后prefix为
GX、move_segment为01、middle为0112_164、suffix为7792633961 - 拼接得到的新文件名为
GX0112_164-01-7792633961.MP4,和你给出的目标文件名完全一致。
内容的提问来源于stack exchange,提问作者Timmay
相关产品推荐
相关产品推荐

