Mac 批量重命名规划工具
粘贴一列文件名,选一个规则,在任何文件被改动之前看到每个新名字。会冲突的、macOS 不允许的名字会被标出并排除。然后复制一段用 mv -n 改名的 zsh 脚本,它绝不会覆盖已有文件。文件不会被上传或打开,页面只处理文件名。
在终端里 cd 进文件夹,运行 ls -1 | pbcopy,再粘贴到这里。也可以在下面选择文件:只读取文件名。
不会打开或上传文件,页面只读取文件名。 最多 5,000 个文件名。
改名规则
预览
3 个会改名,1 个不变,0 个有问题(不会写进脚本)。
| 现在 | 新名称 | 状态 |
|---|---|---|
| IMG_0142.jpg | Trip-0142.jpg | 会改名 |
| IMG_0143.jpg | Trip-0143.jpg | 会改名 |
| IMG_0144.jpg | Trip-0144.jpg | 会改名 |
| Screenshot 2026-09-01 at 10.15.32.png | Screenshot 2026-09-01 at 10.15.32.png | 不变 |
zsh 脚本
使用 mv -n,绝不覆盖已有文件。如果新名字正好是另一个文件现在的名字,脚本会先改成临时名再改成最终名,不会丢文件。
- 打开终端,输入 cd 和一个空格,把文件夹拖进窗口,按回车。
- 粘贴脚本并按回车,或者用 zsh rename.zsh 运行下载的文件。
- 想先看清楚命令,就先勾选“干跑”运行一遍,确认后再正式执行。
- 终端里没有撤销。文件重要的话,先备份文件夹。
它是怎么工作的
- •获取文件名:在终端里 cd 进文件夹,运行 ls -1 | pbcopy,再粘贴。也可以点“选择文件”,浏览器只把文件名交给页面,不会读取内容。
- •替换文字:在每个文件名里查找一段文字(也可以用 JavaScript 正则,$1 插入第一个分组),默认不动扩展名,勾选后才会一起改。添加文字:加在文件名前面,或扩展名之前。按顺序编号:按列表顺序编号,所以先把列表排好。整理文件名:把连续空格换成 - 或 _,也可以全部改成小写。
- •每一行都按 Mac 默认磁盘的规则检查:大小写视为同一个名字,所以 IMG.JPG 和 img.jpg 会冲突。以下情况会被排除在脚本外:两个文件会得到同一个名字;列表里一个不改名的文件已经叫这个名字;名字为空、是 . 或 ..、包含 /,或超过 255 字节。
- •如果新名字正好是列表里另一个文件现在的名字(比如把 1 编成 2、2 编成 3,或只改大小写),脚本会先把所有文件改成临时名,再改成最终名,任何一步都不会撞上还在使用的名字。
- •脚本里的文件名都用单引号括起来,空格、引号、$ 等 shell 字符都是安全的。如果新名字已经被列表外的文件占用,mv -n 会跳过它,而且可能没有提示,所以改完数一下文件数。
- •限制:最多 5,000 个文件名,一次一个文件夹。要连子文件夹一起改,请看批量重命名指南里的 find 和 zmv 用法。
常见问题
- 会上传或直接改我的文件吗?
- 都不会。页面只看到你粘贴或选择的文件名,不会碰文件本身。真正改名发生在你在 Mac 终端里运行脚本的时候。
- 改名能撤销吗?
- 终端没有撤销。先勾选“干跑”运行一遍看清命令,文件重要的话先备份文件夹。如果只是少量文件,Finder 自带的重命名可以用 Command-Z 撤销。
- 为什么某一行显示“已有其他文件叫这个名字”?
- 列表里有一个不改名的文件已经在用这个名字,而在 Mac 默认磁盘上大小写被视为同一个名字。mv -n 会跳过它,所以这一行不会写进脚本。
- 能在 bash 或 Linux 上用吗?
- 脚本只用了带引号的 mv -n,所以在 bash 和 Linux 上也能运行。Linux 文件系统通常区分大小写,所以这里的大小写检查在那边会比实际需要更严格。