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

求Mac系统下按指定规则批量重命名电影文件夹的终端脚本

批量重命名电影文件夹(Mac终端脚本)

需求回顾

我有数百部电影,每部单独存储在一个文件夹中。分类规则为:以ABCD命名的文件夹存放标题首字母为A、B、C、D的电影;其中电影文件夹格式如「Blade Runner 2049 (2017) 0526 20180223Eph」,0526是该文件夹的专属编号。需将所有此类文件夹重命名为「(0526) Blade Runner 2049 (2017) 20180223Eph」格式,部分文件夹无末尾后缀。

解决方案脚本

我给你准备了Mac终端可用的批量重命名脚本,建议先做预览测试,确认效果后再执行实际修改,避免误操作:

步骤1:切换到目标目录

打开终端,先导航到你的电影库根目录(也就是存放ABCD分类文件夹的上级目录):

cd /path/to/your/movie/library

步骤2:预览重命名效果(安全测试)

运行下面的命令,只会打印将要执行的重命名操作,不会实际修改文件夹名称:

find ./ABCD -type d -name "* [0-9][0-9][0-9][0-9] *" -o -name "* [0-9][0-9][0-9][0-9]" | while read dir; do
  # 提取纯文件夹名称(去掉路径前缀)
  dir_name=$(basename "$dir")
  # 用正则匹配并重组新名称
  new_name=$(echo "$dir_name" | sed -E 's/^(.*) ([0-9]{4})( .*)?$/(\2) \1\3/')
  # 打印预览信息
  echo "待重命名:$dir_name → $new_name"
done

步骤3:执行实际重命名

如果预览结果完全符合你的预期,把上面脚本里的echo "待重命名:$dir_name → $new_name"替换成mv命令,执行实际修改:

find ./ABCD -type d -name "* [0-9][0-9][0-9][0-9] *" -o -name "* [0-9][0-9][0-9][0-9]" | while read dir; do
  dir_name=$(basename "$dir")
  new_name=$(echo "$dir_name" | sed -E 's/^(.*) ([0-9]{4})( .*)?$/(\2) \1\3/')
  # 执行重命名操作
  mv "$dir" "$(dirname "$dir")/$new_name"
done

脚本细节说明

  • find ./ABCD -type d:仅查找ABCD文件夹下的子文件夹,不会处理文件
  • 两个-name参数:分别匹配带后缀(如xxx 0000 xxx)和不带后缀(如xxx 0000)的文件夹格式
  • sed正则:核心逻辑是提取4位数字的专属编号,放到最前面并加上括号,同时完整保留原有的电影标题、年份和后缀内容

重要注意事项

  1. 先备份:建议先复制几个测试文件夹,用脚本验证效果后再处理全部文件,防止意外损失
  2. 编号位数适配:如果你的专属编号不是4位数字,把脚本里的[0-9]{4}改成对应位数(比如3位就改成[0-9]{3})
  3. 空格兼容:脚本中所有变量都用双引号包裹,确保带空格的文件夹名称能被正确识别处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:46:05