在 macOS 系统中,修改文件名是日常操作中常见的需求,无论是为了整理文件、规范命名还是修正错误,掌握高效的命令行方法都能提升工作效率,虽然 macOS 提供了图形界面的重命名功能,但通过终端(Terminal)使用命令行操作,可以实现批量处理、精确控制和自动化脚本编写,尤其适合处理大量文件或复杂命名场景,以下是几种常用的 macOS 修改文件名的命令及详细操作方法。

基础命令:mv(移动/重命名)
mv 命令是 Linux 和 macOS 系统中最基础的重命名工具,其核心功能是“移动文件”,但当源文件和目标文件在同一目录下时,实际执行的是“重命名”操作,基本语法为:
mv [原文件名] [新文件名]  
示例操作:
- 
重名单个文件
若要将文件report.txt修改为annual_report.txt,在终端中输入:mv report.txt annual_report.txt
执行后,原文件名
report.txt将被替换为annual_report.txt。 - 
重命名时覆盖提示
默认情况下,若目标文件已存在,mv命令会直接覆盖且无提示,为避免误操作,可添加-i参数(interactive),覆盖前会询问确认:
(图片来源网络,侵删)mv -i report.txt annual_report.txt
若
annual_report.txt已存在,终端会提示overwrite annual_report.txt? (y/n),输入y确认覆盖。 - 
强制覆盖(无提示)
若需强制覆盖且不希望看到提示,可使用-f参数(force):mv -f report.txt annual_report.txt
 
批量重命名:rename 命令
mv 命令适合单文件重命名,但批量处理时效率较低,macOS 默认安装了 Perl 版本的 rename 命令(部分系统可能需要手动安装,通过 brew install rename),支持正则表达式,功能强大,基本语法为:
rename [选项] '正则表达式' 文件名  
示例操作:
- 
批量替换文件名中的关键词
若将当前目录下所有test_开头的文件修改为sample_,test_1.txt→sample_1.txt:
(图片来源网络,侵删)rename 's/test_/sample_/' *
s/原字符串/新字符串/是正则替换语法, 表示匹配所有文件。 - 
批量修改文件扩展名
将所有.log文件修改为.txt:rename 's/\.log$/\.txt/' *
\.log$表示以.log结尾的字符串, 是正则表达式中的结尾锚点。 - 
批量添加前缀或后缀
为所有.jpg文件添加前缀photo_:rename 's/^/photo_/' *.jpg
^表示字符串开头,s/^/photo_/表示在开头添加photo_。
为所有文件添加后缀_backup:rename 's/_backup$//' * # 先移除旧后缀(若有) rename 's/$/_backup/' *
 
高级批量重命名:mmv 命令
mmv(move/mass rename)是一个更专业的批量重命名工具,默认未安装,可通过 Homebrew 安装:brew install mmv,其语法更直观,支持通配符匹配,基本语法为:
mmv [源模式] [目标模式]  
示例操作:
- 
批量替换文件名中的部分字符
将所有file_1.txt、file_2.txt修改为data_1.txt、data_2.txt:mmv 'file_*.txt' 'data_#1.txt'
#1表示源模式中的第一个通配符 匹配的内容,即数字部分。 - 
批量移动并重命名文件
将source_dir目录下的所有.txt文件移动到target_dir并添加前缀old_:mmv 'source_dir/*.txt' 'target_dir/old_#1'
 
使用 find 命令结合 xargs 或 while 循环
对于更复杂的批量重命名需求(如按修改时间、文件大小等条件筛选后重命名),可结合 find 命令查找文件,再通过 xargs 或 while 循环执行重命名。  
示例操作:
- 
查找并重命名最近7天内修改的文件
find . -type f -mtime -7 -exec bash -c 'mv "$1" "${1//old/new}"' _ {} \;find . -type f -mtime -7查找当前目录下7天内修改的文件,-exec结合bash -c执行重命名,${1//old/new}是字符串替换语法,将文件名中的old替换为new。 - 
通过
while循环批量重命名find . -name '*.tmp' | while read file; do mv "$file" "${file%.tmp}.log" done该命令查找所有
.tmp文件并将其扩展名修改为.log,${file%.tmp}是参数扩展,表示移除文件名末尾的.tmp。 
注意事项
- 备份重要文件:批量重命名前建议先备份文件,避免因正则表达式错误导致文件丢失。
 - 测试正则表达式:复杂正则表达式可在小范围文件上测试,确认逻辑无误后再批量执行。
 - 权限问题:确保对目标文件有读写权限,否则 
mv或rename命令会报错。 
相关问答FAQs
Q1: 使用 rename 命令时,如何只修改文件名中的特定部分而不影响扩展名?
A1: 可通过正则表达式锚点精确匹配文件名部分,仅修改文件名中 version 为 ver,保留扩展名:  
rename 's/(.*)version(.*)/$1ver$2/' *
该命令中  匹配任意字符(非贪婪模式),version 是待替换的关键词,$1 和 $2 分别表示前后匹配的分组,确保扩展名不受影响。  
Q2: 如何在 macOS 中为批量重命名命令创建别名(alias),方便后续使用?
A2: 可通过编辑 ~/.zshrc(若使用 Zsh shell)或 ~/.bash_profile(若使用 Bash shell)文件创建别名,为 rename 's/test_/sample_/' 创建别名 batch_rename_test:  
echo 'alias batch_rename_test="rename \"s/test_/sample_/\" *"' >> ~/.zshrc source ~/.zshrc
之后直接输入 batch_rename_test 即可执行批量重命名,注意别名中的引号需转义,避免与 shell 语法冲突。
