macos终端批量重命名可用四种原生方法:一、for循环+mv(加前缀/替换空格);二、zsh的zmv(大小写转换+序号);三、find+exec(跨目录/按时间重命名);四、自定义rename.sh脚本(参数化sed替换)。

如果您需要在 macOS 系统中通过终端对多个文件进行统一、规则化的重命名操作,则可借助 rename 命令或原生 shell 脚本实现。以下是几种兼容性良好、无需额外安装工具即可执行的批量重命名方法:
一、使用 for 循环配合 mv 命令重命名
该方法依赖 macOS 自带的 Bash 或 Zsh,不需第三方工具,适用于基础模式替换(如添加前缀、后缀、替换固定字符串)。其核心是遍历匹配文件并逐个调用 mv 修改名称。
1、打开终端,进入目标文件所在目录,例如:cd ~/Desktop/test_folder。
2、执行以下命令为所有 .txt 文件添加 “backup_” 前缀:for file in *.txt; do mv "$file" "backup_$file"; done。
3、若需将文件名中的空格替换为下划线,运行:for file in *\ *; do mv "$file" "${file// /_}"; done。
二、使用 zsh 内置的 rename 功能(仅限 zsh)
macOS Catalina 及之后版本默认使用 zsh,其 glob 扩展支持 zmv 命令,本质是安全封装的重命名函数,需先启用扩展模块。
1、在终端中输入:autoload -Uz zmv,确保功能已加载。
2、为所有 JPG 文件统一改为小写并添加序号,执行:zmv '(*).JPG' '${(L)1}_$((++i)).jpg'。
3、将文件名中连续多个下划线简化为单个:zmv '(**/)*__*(*)' '${2//__/_}'。
三、使用 find 命令结合 shell 替换逻辑
该方式适合按路径深度筛选、跨子目录操作,或需结合文件属性(如修改时间)进行条件重命名,利用 find 定位 + -exec bash -c 执行动态重命名逻辑。
1、进入根操作目录后,运行以下命令将所有 PNG 文件末尾添加 “_v2”:find . -name "*.png" -exec bash -c 'mv "$1" "${1%.png}_v2.png"' _ {} \;。
2、按文件修改时间顺序重命名为 001.jpg、002.jpg…:i=1; find . -name "*.jpg" -print0 | sort -z | while IFS= read -r -d '' f; do mv "$f" "$(dirname "$f")/$(printf "%03d" $i).jpg"; ((i++)); done。
四、创建可复用的 rename.sh 脚本文件
将常用逻辑封装为脚本,便于重复调用与参数化控制,避免每次手动输入长命令。脚本内使用位置参数接收用户输入的模式与替换内容。
1、新建脚本:touch ~/rename.sh && chmod +x ~/rename.sh。
2、用 nano 编辑:nano ~/rename.sh,粘贴以下内容:
#!/bin/zsh\nfor file in $1; do\n newname=$(echo "$file" | sed "s/$2/$3/g")\n [ "$file" != "$newname" ] && mv "$file" "$newname"\ndone。
3、保存退出后,在目标目录执行:~/rename.sh "*.log" "error" "warning",即将所有含 “error” 的 .log 文件名中的 “error” 替换为 “warning”。










