可使用五种方法批量修改文件扩展名:一、访达“重命名”功能可视化替换;二、终端for循环配合mv命令;三、zsh的zmv安全重命名;四、find命令递归修改;五、“显示简介”窗口统一覆盖扩展名。

如果您需要一次性更改多个文件的扩展名,但逐个重命名效率低下或 Finder 界面限制操作,则可能是由于系统默认隐藏扩展名、未启用批量编辑功能或图形界面无法处理大量文件。以下是解决此问题的步骤:
一、使用访达内置“重命名”功能批量修改后缀名
该方法无需命令行,通过 macOS 原生访达界面实现可视化批量替换,适用于日常办公场景,支持精确匹配旧扩展名并统一替换为新后缀,且可预览结果避免误操作。
1、在访达中打开目标文件夹,按 Command+A 全选需修改后缀的文件。
2、右键任意一个已选中文件,在快捷菜单中选择「重命名 X 个项目…」。
3、在弹出窗口中选择「替换文本」模式。
4、在「查找」栏输入原始扩展名(不含点,如 jpg);在「替换为」栏输入新扩展名(不含点,如 jpeg)。
5、勾选「区分大小写」以确保仅匹配指定大小写的扩展名形式。
6、点击「重命名」,系统立即执行全部替换并显示完成提示。
二、使用终端 for 循环配合 mv 命令批量修改后缀名
该方法直接调用系统底层文件移动机制,不依赖图形界面状态,适用于所有 macOS 版本,尤其适合处理含空格、特殊字符或大量文件的场景,执行速度快且可控性强。
1、打开“终端”应用(位于“应用程序 → 实用工具”中)。
2、输入 cd 加空格,再将目标文件夹拖入终端窗口,回车进入该路径。
3、执行以下命令将当前目录下所有 .txt 文件改为 .md:
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
4、执行 ls -la 查看当前目录文件列表,确认扩展名已更新。
三、使用终端 zsh 内置 zmv 命令安全批量重命名
zmv 是 zsh shell 提供的安全重命名函数,自动检测名称冲突并阻止覆盖,支持复杂模式匹配与变量运算,适用于 Catalina 及更新版本(默认 shell 为 zsh),避免手动编写循环逻辑出错。
1、在终端中运行 autoload -Uz zmv 加载重命名模块。
2、将所有大写扩展名 .JPG 统一转为小写 .jpg 并保留原文件名:zmv '(*).JPG' '$1.jpg'
3、将文件名中连续两个下划线 __ 替换为单个下划线 _:zmv '(**/)*__*(*)' '${2//__/_}'
4、执行完毕后,使用 ls 验证变更结果。
四、使用 find 命令跨子目录批量修改扩展名
当目标文件分散在多层子文件夹中时,find 可递归定位匹配项,并结合 bash -c 执行动态重命名,突破单一目录限制,同时支持按文件属性(如类型、时间)筛选,提升操作精准度。
1、进入最上级目标目录后,运行以下命令将所有子目录中的 .png 文件改为 .webp:
find . -name "*.png" -exec bash -c 'mv "$1" "${1%.png}.webp"' _ {} \;
2、若需仅修改最近7天内修改过的 .log 文件为 .bak:
find . -name "*.log" -mtime -7 -exec bash -c 'mv "$1" "${1%.log}.bak"' _ {} \;
3、执行完成后,可通过 find . -name "*.webp" 快速验证是否全部更新成功。
五、通过“显示简介”窗口批量修改多个文件扩展名
该方法绕过 Finder 的扩展名锁定机制,利用系统级元数据编辑能力,强制统一覆盖多个文件的扩展名字段,适用于单次操作中需同步更新文件类型声明(UTI)与扩展名的场景。
1、在访达中选中多个目标文件(支持跨文件夹多选)。
2、按 Command+I 打开统一“显示简介”窗口。
3、在“名称与扩展名”区域,点击任一文件的扩展名部分(如 .csv),使其高亮可编辑。
4、删除原扩展名,输入新扩展名(如 .tsv),注意保留主文件名与中间的点。
5、关闭简介窗口时,若弹出警告,勾选「始终使用此扩展名」后点击「继续」。

















