# Mac 批量重命名文件完全指南——不装任何第三方软件 > Finder 自带的批量重命名(替换文本、添加文本、格式化编号),加上在 zsh 里跑过的终端命令:zmv 干跑、printf 补零编号、去空格、递归子文件夹。 - Canonical page: https://obelisk.club/blog/batch-rename-files-mac-zh - Author: Peter Zhang - Published: 2026-09-16 - Tags: mac, 批量重命名, finder, terminal, 效率 在 Mac 上批量改文件名:在 Finder 里选中这些文件,按住 Control 点按,选**重新命名…**(较早的 macOS 上显示为**给 [N] 个项目重新命名…**)。对话框可以替换文本、加前缀或后缀、重新编号,改完按 ⌘Z 能整批撤销。这个功能从 OS X Yosemite(2014)起就内置在 Finder 里,不用装改名软件,也不用写脚本。 Finder 做不到的(子文件夹、按模式匹配、要反复用的脚本),用后面的终端命令。每条都在 zsh 5.9(Mac 默认 shell)里对测试文件夹跑过,文中给出的输出就是它实际打印的内容。 **怎么选:** | 你想做的事 | 用什么 | 能撤销吗 | | --- | --- | --- | | 把 `IMG_` 换成有意义的名字 | Finder → 替换文本 | ⌘Z | | 给每个文件加项目名或日期 | Finder → 添加文本 | ⌘Z | | 重新编号为 `名称 001`、`名称 002`… | Finder → 格式 | ⌘Z | | 递归处理子文件夹 | 终端 `find` / `zmv` | 不能——先干跑 | | 正则、条件逻辑、可复用脚本 | 终端 | 不能——先干跑 | ## 快捷路线:Finder 内置批量重命名 选中要改名的文件,按住 Control 点按(或右键)选中项,选择**重新命名…**。选中多个文件时,Finder 会弹出批量重命名对话框,而不是在原地改名(较早的 macOS 上这个菜单项叫**给 [N] 个项目重新命名…**)。对话框顶部的下拉框在三种模式之间切换,底部的“示例”一行会先显示第一个文件改完后的名字: | 模式 | 作用 | 适用场景 | | --- | --- | --- | | **替换文本** | 在每个文件名里查找一段文字并替换 | 清掉 `IMG_` 这类前缀,或批量改正错别字 | | **添加文本** | 在名字前或后加一段固定文字 | 给文件打上项目名或日期标记 | | **格式** | 用自定名称 + 计数器/索引/日期重建文件名 | 把一团乱麻变成 `旅行 1`、`旅行 2`…… | 几个能省去麻烦的细节: - **先选中,再改名。** 只有选中多个项目时才是批量模式,单个项目只会进入普通的行内改名。 - **文件、文件夹、磁盘都适用。** 同一个对话框、同一套规则。 - **用替换文本时留意扩展名。** 添加文本和格式不会动 `.jpg`/`.pdf`;用替换文本时,查找的文字不要选成扩展名里也会出现的字符。 ### 替换文本——清理统一前缀 选**替换文本**,输入要查找的文字和替换文字(留空即为删除),点重新命名。把 `DSC_` 替换成 `海边-`,`DSC_0142.jpg` 就变成 `海边-0142.jpg`。这是使用频率最高的模式:相机导出、截图堆、导出文件夹一次清完。 ![Finder 批量重命名对话框的“替换文本”模式:查找 IMG_,替换为 Trip-,示例 Trip-0142.jpg(英文系统界面)](/blog/finder-rename-replace-text.webp "567x237") ### 添加文本——加前缀或后缀 选**添加文本**,输入文字,选**名称之前**或**名称之后**。「之后」会落在扩展名前面,不会破坏文件类型。 ### 格式——顺序编号 选**格式**,用于旧文件名已经没救、只想要一列干净编号的情况。设置**名称格式**(名称和索引 / 名称和计数器 / 名称和日期)、自定义名称,以及起始编号。Finder 不会替你加空格或连字符,需要的话在自定义名称末尾自己加上:自定义名称写 `发票-`、选“名称和索引”,得到 `发票-1`、`发票-2`…… 两个决定结果的细节: - **窗口排序 = 编号顺序。** Finder 按当前窗口显示顺序编号,所以先按日期或名称排好序,再打开对话框。 - **索引 vs 计数器。** 索引加的是普通数字(`Trip1.jpg`),计数器补足五位(`Trip00001.jpg`),对话框里的示例行会直接显示出来。想要其他位数(比如 `001`),用下面的终端 `printf` 循环。 ![“格式”模式选“名称和计数器”:自定义名称 Trip 得到 Trip00001.jpg(英文系统界面)](/blog/finder-rename-format-counter.webp "488x158") > 改完后悔了?立刻按 **Command-Z**——整批重命名会作为一步撤销。 ## 进阶路线:终端 Finder 对话框很好用,直到你需要条件逻辑、递归或它表达不了的模式匹配。这时进终端。`mv` 没有撤销,所以下面每条配方都遵循同一个仪式:**先在命令前加 `echo` 干跑一遍,看清会发生什么,再去掉 `echo` 真正执行。** 不想自己写循环的话,[批量重命名规划工具](https://obelisk.club/tools/batch-rename?lang=zh)可以在浏览器里预览每个新名字、标出冲突,并生成一段可以直接粘贴到终端的 `mv -n` 脚本。 按模式替换整个文件夹(zsh,Catalina 起的 Mac 默认 shell): ```zsh # 把当前文件夹里所有 .jpg 的 "IMG_" 换成 "旅行-" autoload -U zmv zmv -n 'IMG_(*).jpg' '旅行-$1.jpg' # -n = 干跑;去掉后才真正执行 ``` 干跑只打印将要执行的改名,不会改动任何文件。在有三个相机文件的文件夹里,它打印的是: ```text mv -- IMG_0142.jpg 旅行-0142.jpg mv -- IMG_0143.jpg 旅行-0143.jpg mv -- IMG_0144.jpg 旅行-0144.jpg ``` 精确补零的顺序编号(`shot-001.jpg`、`shot-002.jpg`……),第一次运行时在 `mv` 前面加上 `echo`: ```zsh i=1 for f in IMG_*.jpg; do mv -n -- "$f" "$(printf 'shot-%03d.jpg' "$i")" ((i++)) done ``` 去掉 macOS 截图文件名里的空格: ```zsh for f in Screenshot*.png; do mv -n -- "$f" "${f// /-}"; done ``` 给文件夹里每个 PDF 加今天的日期前缀: ```zsh for f in *.pdf; do mv -n -- "$f" "$(date +%F)-$f"; done ``` 递归进子文件夹——Finder 对话框完全做不到的事: ```zsh # 先预览所有匹配…… find . -name 'IMG_*.jpg' -print # ……再逐目录执行改名 find . -name 'IMG_*.jpg' -execdir zsh -c 'mv -n -- "$1" "${1/IMG_/旅行-}"' _ {} \; ``` 关于 `-n` 参数:目标文件名已存在时,`mv -n` 会**跳过,而不是覆盖**。测试里,已有的文件内容没变,源文件也留在原处。跳过时可能不会有任何提示,所以大批量操作后用 `ls | wc -l` 数一下文件数,确认和预期一致。 ## 该用哪个? - **一个文件夹、明确的查找替换或干净编号 → Finder。** 比敲命令快,还有 ⌘Z。 - **递归子文件夹、正则、以后要重复用的脚本 → 终端。** 值得多一分谨慎。 ## 常见问题 **Mac 上不下载软件怎么批量改文件名?** 在 Finder 里选中文件,右键选**重新命名…**(较早的 macOS 上叫**给 [N] 个项目重新命名…**),用替换文本、添加文本或格式模式。Yosemite(2014)之后的每一版 macOS 都自带。 **怎么把文件按顺序编号(文件 1、文件 2……)?** Finder → 格式 → 「名称和索引」,按窗口当前排序编号;「名称和计数器」会补足五位(`00001`)。想要 `001` 这样的三位编号,用上面的 `printf` 终端循环。 **Finder 能连子文件夹一起改吗?** 不能——重命名对话框只处理当前窗口选中的内容。递归要用终端(`find` 或 `zmv`),或者进每个子文件夹分别全选。 **批量重命名能撤销吗?** Finder 可以:⌘Z 一步撤销整批。终端不行——所以每条配方都有干跑形式(`echo mv …` 或 `zmv -n`)。 **为什么终端批量改名后有几个文件没改?** 几乎都是重名冲突:目标名已存在时 `mv -n` 会跳过而不是覆盖。重新干跑一遍,找出重复的目标名。 批量整理文件时,你多半也在处理格式和导出——同样的批量思路适用于[用 sips 从终端调整图片尺寸](https://obelisk.club/blog/macos-sips-command-line-guide-zh)和[把截图合并成一个 PDF](https://obelisk.club/blog/combine-screenshots-into-pdf-mac)。 ## 参考资料 - [在 Mac 上重新命名文件、文件夹与磁盘 — Apple 支持](https://support.apple.com/zh-cn/guide/mac-help/mchlp1144/mac) - [zshcontrib(1) — zmv](https://zsh.sourceforge.io/Doc/Release/User-Contributions.html)