跳到主要内容

批量重命名照片与文件:先生成方案再改名,避免覆盖冲突

用模板加序号、前缀后缀、查找替换和大小写规则批量给文件改名,先生成可复核的重命名方案,确认没有覆盖冲突再执行,适合整理一整批照片和素材。

发布于 作者 李雷
#批量重命名 #文件改名 #照片整理 #文件管理

批量重命名照片与文件:先出方案,再动手改名

整理一个塞满 IMG_2391.JPG、IMG_2392.JPG 的文件夹时,真正费事的不是改名本身,而是改名之前心里没底:序号会不会重?某两个名字会不会撞到一起把文件覆盖掉?我自己丢过一次素材,就是因为两张图改完名字一模一样,后一个把前一个盖了。从那以后我养成一个习惯:先把整批的新文件名摆成一张表看清楚,确认每一行都不冲突,再真正执行。

批量文件重命名计划做的就是这件事。它不直接动你磁盘上的文件,而是读取文件名,按你定的规则算出每一个的新名字,生成一份可复核的方案和对应的 shell 命令,你看完没问题再到浏览器外去跑。

用模板拼出新文件名

新文件名由三个模板变量拼出来:

  • {{n}} 是序号,会按文件顺序自动从起始值往后排
  • {{name}} 是原始的基础文件名,不含扩展名
  • {{ext}} 是扩展名

模板 {{n}}-{{name}} 会得到 1-原名2-原名 这样带序号前缀的结果。想要纯序号文件名就写 photo-{{n}},想保留原名只加前缀就写 2026-{{name}}。序号的起始值可以改,如果这批是某个相册的第二段,从 24 开始接着排也行。

前缀后缀和查找替换

加前缀后缀本质上就是在模板里把固定文字写在 {{name}} 前后。比如一批客户交付图统一加项目代号,模板写成 acme-{{name}}-final,出来就是 acme-原名-final.jpg

查找替换的典型场景是清掉相机或导出工具留下的噪音前缀。IMG_DSC 这种没意义的开头,配合大小写规范化一起处理,一整批文件名立刻清爽。

统一大小写,告别混乱命名

同一个文件夹里 Hero Image.JPGhero_image.png旅行 照片.PNG 混在一起,上传到 CMS 或部署到服务器后很容易出问题。大小写规则一共五种:保持原样、全小写、全大写、kebab-case、snake_case。选 kebab-case 后,Hero Image.JPG 会规范成 hero-image.jpg,空格变连字符,大写转小写,扩展名也一并归正。

一批照片的真实重命名方案

假设手上有三个文件要整理,模板用 {{n}}-{{name}},大小写选 kebab-case,起始序号 1。工具生成的方案大致是这样:

| 原文件名 | 新文件名 | 状态 | shell 命令 | | --- | --- | --- | --- | | Hero Image.JPG | 1-hero-image.jpg | ok | mv -n -- ... | | Q2 Invoice Final.pdf | 2-q2-invoice-final.pdf | ok | mv -n -- ... | | 旅行 照片.png | 3-旅行-照片.png | ok | mv -n -- ... |

每一行都标出状态和对应命令。中文文件名也照常处理,空格转连字符,序号顺次往后。导出的 CSV 包含原名、新名、状态和命令四列,扫一眼就能看清整批的全貌。

避免覆盖冲突,是这件事的关键

批量改名最危险的就是两个不同文件算出同一个新名字,直接覆盖。工具会把这种情况标成 duplicate-target 并且不给 shell 命令,哪怕两个目标只是大小写或 Unicode 写法不同(在不区分大小写的文件系统上,Photo.JPG 改成 Photo.jpg 撞上已有的 photo.jpg 也会被拦下)。生成的命令统一带 -n 参数,意思是目标已存在就不动手,等于在执行层再加一道保险。但请记住:文件系统规范化后的所有冲突不一定全都能提前发现,执行前还是把 CSV 通读一遍,命令也只在目标目录里跑。

照片整理完,如果还想顺手把一堆 HEIC 转成 JPG,可以接着用图片格式转换。两步配合下来,一个乱糟糟的相册文件夹就能变得整整齐齐。

整个过程里文件本身不会上传,工具只读文件名和元数据。先看方案再改名这一个习惯,能挡掉绝大多数批量改名翻车的情况。


Made by Toolora · Updated 2026-06-13