在Linux操作系统中,重命名文件或目录是一项基础且常用的操作,无论是为了整理文件系统、遵循命名规范,还是修正错误,掌握正确的重命名方法都至关重要,Linux系统提供了多种重命名工具,其中mv命令是最基础、最通用的方式,而rename命令(基于Perl的版本)则提供了更强大的批量重命名功能,本文将详细介绍这两种命令的使用方法,涵盖基础语法、常见场景及实用技巧,帮助用户高效完成文件重命名任务。

使用mv命令进行基础重命名
mv(move)命令是Linux中用于移动文件或目录的命令,但同时也具备重命名功能,当源文件和目标文件位于同一目录时,mv命令实际上执行的是重命名操作,其基本语法为:mv [选项] 源文件 目标文件。
重命名单个文件
重命名单个文件是最简单的场景,将文件old_name.txt重命名为new_name.txt,只需执行:
mv old_name.txt new_name.txt
如果目标文件已存在,mv命令会覆盖目标文件,为了避免意外覆盖,可以使用-i选项(interactive模式),在覆盖前提示用户确认:
mv -i old_name.txt new_name.txt
重命名目录
重命名目录的语法与文件类似,将目录old_dir重命名为new_dir:
mv old_dir new_dir
需要注意的是,如果目标目录已存在且非空,mv命令会将源目录移动到目标目录内部,而非重命名,在重命名目录时需确保目标目录不存在。
移动并重命名文件
mv命令的核心功能是移动文件,当源文件和目标文件位于不同目录时,会执行移动操作,将/home/user/docs/old_file.txt移动到/home/user/backup/目录并重命名为new_file.txt:
mv /home/user/docs/old_file.txt /home/user/backup/new_file.txt
如果目标目录已存在,文件会被移动到该目录下并保持原名;如果目标路径包含新文件名,则同时完成移动和重命名。
使用rename命令进行批量重命名
当需要对多个文件进行模式匹配的重命名时,mv命令会显得效率低下,基于Perl的rename命令(需安装,如prename或file-rename)提供了强大的正则表达式支持,能够高效完成批量重命名任务,其基本语法为:rename '表达式' 文件列表。

安装rename命令
不同Linux发行版的rename命令可能存在差异,建议安装Perl版本的rename,在Debian/Ubuntu系统中:
sudo apt install rename
在CentOS/RHEL系统中:
sudo yum install prename
批量修改文件扩展名
批量修改文件扩展名是rename命令的常见用途,将当前目录下所有.txt文件改为.md文件:
rename 's/\.txt$/\.md/' *.txt
s/\.txt$/\.md/是一个Perl正则表达式,表示将行尾()的.txt替换为.md。
批量添加或删除文件名前缀/后缀
-
添加前缀:为所有
.jpg文件添加backup_前缀:rename 's/^/backup_/' *.jpg
^表示行首,backup_会被添加到文件名开头。 -
删除前缀:假设所有文件名以
temp_开头,现需删除该前缀:rename 's/^temp_//' *
-
添加后缀:为所有
.log文件添加_2023后缀:
rename 's/\.log$/_2023&/' *.log
&表示匹配到的部分(即.log),结果为file.log变为file_2023.log。
批量替换文件名中的特定字符
将文件名中的所有空格替换为下划线:
rename 's/\s+/_/g' *
\s+匹配一个或多个空格,g表示全局替换。
批量重命名并按序编号
将所有.txt文件重命名为file_1.txt、file_2.txt等形式:
rename -n 's/^/file_/' *.txt # 预览效果
rename -n 's/\.txt$/sprintf("_%d.txt", ++$count)/e' *.txt # 高级用法
-n选项表示预览操作而不实际执行,e选项表示将替换部分作为Perl代码执行。$count需在外部定义,可通过循环实现:
count=1; for f in *.txt; do mv "$f" "file_${count}.txt"; ((count++)); done
重命名操作中的注意事项
- 备份重要文件:在执行批量重命名前,建议先备份文件或使用
-n选项预览,避免误操作导致数据丢失。 - 文件名中的特殊字符:文件名包含空格、特殊符号(如、)时,需用引号括起来,如
mv "my file.txt" "new file.txt"。 - 权限问题:确保对目标文件有写权限,否则会提示权限不足。
- 大小写敏感:Linux文件名区分大小写,
File.txt和file.txt是不同的文件。
Linux中的文件重命名操作通过mv和rename命令即可轻松实现。mv命令适用于简单、单次的重命名任务,而rename命令凭借正则表达式支持,能高效处理复杂的批量重命名需求,用户需根据实际场景选择合适的工具,并注意操作细节以避免错误,掌握这些技巧,不仅能提升文件管理效率,还能为后续的系统管理操作打下坚实基础。

















