在macOS系统中,文件夹重命名虽然可以通过图形界面的点击操作完成,但对于需要批量处理、自动化脚本或远程管理场景,使用命令行工具会更加高效,macOS基于Unix系统,提供了多种命令行方式实现文件夹重命名,包括mv命令、rename命令(需安装)以及通过Shell脚本实现的批量重命名功能,以下将详细介绍这些命令的使用方法、注意事项及实际应用场景。

基础命令:mv命令
mv(move)是macOS中最基础也是最常用的文件/文件夹重命名命令,其核心功能是移动文件或文件夹,但当源路径和目标路径在同一目录下时,即可实现重命名操作,基本语法为:
mv [源文件夹名称] [目标文件夹名称]
使用示例:
- 简单重命名:将当前目录下的
旧文件夹重命名为新文件夹mv 旧文件夹 新文件夹
- 带路径的重命名:将
/Users/user/Documents下的temp文件夹移动到/Users/user/Downloads并重命名为backupmv /Users/user/Documents/temp /Users/user/Downloads/backup
注意事项:
- 权限问题:确保对源文件夹有读取权限,对目标位置有写入权限,若权限不足,需使用
sudo提权(如sudo mv 文件夹名 新文件夹名),但需谨慎操作,避免系统文件误修改。 - 目标冲突:若目标位置已存在同名文件夹,
mv命令会将其覆盖(默认无提示),建议使用mv -i参数实现交互式确认,mv -i 旧文件夹 新文件夹 # 若存在同名文件夹,会提示是否覆盖
- 特殊字符处理:若文件夹名包含空格或特殊字符(如
My Folder),需用引号包裹或转义,mv "My Folder" "My New Folder" # 或使用反斜杠转义空格:mv\ My\ Folder\ My\ New\ Folder
高级批量重命名:rename命令
macOS默认未安装rename命令(与Linux中的prename或file-rename功能相同),需通过Homebrew等工具安装,安装后可通过正则表达式实现灵活的批量重命名。
安装方法:
brew install rename # 安装rename工具(基于Perl的版本)
基本语法:
rename [选项] '正则表达式' 文件夹名模式
常用选项包括:
-n:预览重命名结果(不实际执行)-v:显示重命名过程-f:强制覆盖已存在文件
使用示例:
- 统一替换文件夹名中的关键词:将当前目录下所有包含“旧”的文件夹名替换为“新”
rename 's/旧/新/' */ # */匹配所有子文件夹
- 添加前缀/后缀:为所有文件夹名添加“bak_”前缀
rename 's/^/bak_/' */ # ^匹配字符串开头
- 删除特定字符:移除所有文件夹名中的“temp_”前缀
rename 's/temp_//' */ # 替换为空字符串
- 复杂正则匹配:将“项目_2025”开头的文件夹重命名为“项目_2025”
rename 's/^项目_2025/项目_2025/' */
注意事项:
- 正则表达式需用单引号包裹,避免Shell解析特殊字符。
- 建议先使用
-n预览结果,确认无误后再去掉-n执行实际操作。
Shell脚本实现自定义重命名逻辑
对于更复杂的重命名需求(如按序号重命名、根据修改时间调整等),可编写Shell脚本结合循环和条件判断实现。

示例1:批量添加序号
将当前目录下的所有文件夹按“序号_原文件夹名”格式重命名:
#!/bin/bash
i=1
for dir in */; do
if [ -d "$dir" ]; then # 确保是文件夹
mv "$dir" "${i}_${dir%/}" # ${dir%/}移除路径末尾的斜杠
((i++))
fi
done
将脚本保存为rename_with_num.sh,赋予执行权限后运行:
chmod +x rename_with_num.sh ./rename_with_num.sh
示例2:根据修改时间重命名
将文件夹按“年月日_原文件夹名”格式重命名(需安装date命令,macOS默认支持):
#!/bin/bash
for dir in */; do
if [ -d "$dir" ]; then
mod_time=$(stat -f "%Sm" -t "%Y%m%d" "$dir") # 获取修改时间并格式化
mv "$dir" "${mod_time}_${dir%/}"
fi
done
图形界面与命令行的结合使用
对于不熟悉命令行的用户,可通过以下方式辅助命令行操作:

- 获取文件夹路径:在Finder中右键点击文件夹,按
Option+Command+C复制路径,直接粘贴到终端命令中。 - 批量生成重命名命令:使用
find命令列出所有文件夹,结合sed生成mv命令,find . -maxdepth 1 -type d -name "*旧*" | sed 's|^\(.*\)旧\(.*\)$|mv "\1旧\2" "\1新\2"|' > rename_commands.sh
执行后生成的
rename_commands.sh文件将包含所有重命名命令,检查无误后运行即可。
常见问题与解决方法
-
命令执行后文件夹消失
可能原因:目标路径错误或权限不足导致移动失败。
解决方法:使用ls -la检查当前目录文件,或通过find / -name "文件夹名" 2>/dev/null全局搜索。 -
批量重命名时部分文件夹未处理
可能原因:文件夹名包含特殊字符导致脚本中断。
解决方法:在脚本中添加shopt -s nullglob避免特殊字符报错,或使用find命令的-print0结合xargs -0处理含空格的文件名。
相关问答FAQs
Q1: 使用mv命令时如何避免覆盖已存在的文件夹?
A1: 可通过mv -n参数(no-clobber)避免覆盖,例如mv -n 源文件夹 目标文件夹,若目标文件夹已存在,命令将跳过并显示错误信息,也可先使用ls命令检查目标位置是否存在同名文件夹。
Q2: 如何在重命名时保留文件夹的原始权限和时间戳?
A2: 默认情况下,mv命令会保留文件夹的权限和时间戳,若需显式保留,可使用cp -p复制文件夹后再删除原文件夹(但效率较低),或通过rsync -a命令实现移动并保留所有属性,
rsync -a --remove-source-files 源文件夹/ 目标文件夹/
其中-a参数相当于-rlptgoD,保留权限、时间戳、所有者等信息。
