Back to Blog
·1 min read

Mac 批量重命名文件完全指南——不装任何第三方软件

Finder 自带的批量重命名(替换文本、添加文本、格式化编号)+ 实测过的终端命令:zmv 干跑、printf 补零编号、去空格、递归子文件夹。每条命令都验证过。

Mac 批量重命名文件,不需要装任何软件

大多数人不知道:Mac 批量改文件名根本不用下载改名工具,也不用 Automator 或 AppleScript。从 OS X Yosemite(2014)开始,Finder 就内置了批量重命名,覆盖你真正会用到的三种操作——查找替换、加前缀/后缀、顺序编号。零安装,零订阅,一个文件都不用打开。

这篇从零操作成本的 Finder 路线讲到需要精细控制时的终端命令。(2026 年 9 月更新——下文每条终端命令都重新跑过验证。)

十秒选方法:

你想做的事用什么能撤销吗
IMG_ 换成有意义的名字Finder → 替换文本⌘Z
给每个文件加项目名或日期Finder → 添加文本⌘Z
重新编号为 名称 001名称 002Finder → 格式⌘Z
递归处理子文件夹终端 find / zmv不能——先干跑
正则、条件逻辑、可复用脚本终端不能——先干跑

快捷路线:Finder 内置批量重命名

选中要改名的文件,按住 Control 点按(或右键)选中项,选择重新命名。选中多个文件时,菜单会变成给 [N] 个项目重新命名…,弹出一个只有一个下拉框的小对话框。这个下拉框就是全部工具——三种模式:

模式作用适用场景
替换文本在每个文件名里查找一段文字并替换清掉 IMG_ 这类前缀,或批量改正错别字
添加文本在名字前或后加一段固定文字给文件打上项目名或日期标记
格式用自定名称 + 计数器/索引/日期重建文件名把一团乱麻变成 旅行 1旅行 2……

几个能省去麻烦的细节:

  • 先选中,再改名。 只有选中多个项目时才是批量模式,单个项目只会进入普通的行内改名。
  • 文件、文件夹、磁盘都适用。 同一个对话框、同一套规则。
  • 扩展名不会被动。 Finder 只改名字部分,不会碰 .jpg/.pdf

替换文本——清理统一前缀

替换文本,输入要查找的文字和替换文字(留空即为删除),点重新命名。把 DSC_ 替换成 海边-DSC_0142.jpg 就变成 海边-0142.jpg。这是使用频率最高的模式:相机导出、截图堆、导出文件夹一次清完。

添加文本——加前缀或后缀

添加文本,输入文字,选名称之前名称之后。「之后」会落在扩展名前面,不会破坏文件类型。

格式——顺序编号

格式,用于旧文件名已经没救、只想要一列干净编号的情况。设置名称格式(名称和索引 / 名称和计数器 / 名称和日期)、自定义名称,以及起始编号。结果类似 发票 001发票 002

两个决定结果的细节:

  • 窗口排序 = 编号顺序。 Finder 按当前窗口显示顺序编号,所以先按日期或名称排好序,再打开对话框。
  • 索引 vs 计数器。 索引是 1、2、3…;计数器补足五位(00001)。想要正好三位补零,用下面的终端 printf 循环。

> 改完后悔了?立刻按 Command-Z——整批重命名会作为一步撤销。

进阶路线:终端

Finder 对话框很好用,直到你需要条件逻辑、递归或它表达不了的模式匹配。这时进终端。mv 没有撤销,所以下面每条配方都遵循同一个仪式:先在命令前加 echo 干跑一遍,看清会发生什么,再去掉 echo 真正执行。

按模式替换整个文件夹(zsh,Catalina 起的 Mac 默认 shell):

# 把当前文件夹里所有 .jpg 的 "IMG_" 换成 "旅行-"
autoload -U zmv
zmv -n 'IMG_(*).jpg' '旅行-$1.jpg'   # -n = 干跑;去掉后才真正执行

精确补零的顺序编号(shot-001.jpgshot-002.jpg……):

i=1
for f in IMG_*.jpg; do
  mv -n -- "$f" "$(printf 'shot-%03d.jpg' "$i")"
  ((i++))
done

去掉 macOS 截图文件名里的空格:

for f in Screenshot*.png; do mv -n -- "$f" "${f// /-}"; done

给文件夹里每个 PDF 加今天的日期前缀:

for f in *.pdf; do mv -n -- "$f" "$(date +%F)-$f"; done

递归进子文件夹——Finder 对话框完全做不到的事:

# 先预览所有匹配……
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 里选中文件,右键选给 [N] 个项目重新命名…,用替换文本、添加文本或格式模式。Yosemite(2014)之后的每一版 macOS 都自带。

怎么把文件按顺序编号(文件 1、文件 2……)? Finder → 格式 → 「名称和索引」,按窗口当前排序编号。想要 001 这样的补零格式,用上面的 printf 终端循环。

Finder 能连子文件夹一起改吗? 不能——重命名对话框只处理当前窗口选中的内容。递归要用终端(findzmv),或者进每个子文件夹分别全选。

批量重命名能撤销吗? Finder 可以:⌘Z 一步撤销整批。终端不行——所以每条配方都有干跑形式(echo mv …zmv -n)。

为什么终端批量改名后有几个文件没改? 几乎都是重名冲突:目标名已存在时 mv -n 会跳过而不是覆盖。重新干跑一遍,找出重复的目标名。

批量整理文件时,你多半也在处理格式和导出——同样的批量思路适用于用 sips 从终端调整图片尺寸把截图合并成一个 PDF

参考资料

#mac#批量重命名#finder#terminal#效率

Written by

Peter Zhang

Building local-first Mac & iOS productivity apps at Obelisk Club.