在 Linux 系统中,文件和目录的管理是日常操作的核心环节,而“改名”作为最基础的操作之一,几乎每个用户都会频繁使用,无论是整理文档、规范命名,还是避免系统冲突,掌握 Linux 下的改名命令都能显著提升工作效率,本文将围绕 Linux 系统中最常用的改名命令 mv 和 rename,从基本语法到进阶技巧,结合实际场景进行详细解析,帮助读者全面掌握文件与目录的重命名方法。

基础改名命令:mv 的核心用法
mv(move)是 Linux 中最基础的文件操作命令,其核心功能是“移动文件”,但同时也具备“重命名”的能力,当源路径和目标路径位于同一目录时,mv 会执行重命名操作;若位于不同目录,则实现文件移动。
重命名单个文件
重命名单个文件是 mv 最简单的用法,基本语法为:
mv [原文件名] [新文件名]
将 document.txt 改名为 report.txt:
mv document.txt report.txt
注意:若新文件名已存在,原文件会直接覆盖目标文件,因此操作前需确认目标文件是否需要保留。
重命名目录
目录的重命名与文件操作一致,只需将文件名替换为目录名即可,将 old_folder 改名为 new_folder:
mv old_folder new_folder
mv 会递归处理目录内的所有文件和子目录,确保整个目录结构被重命名。
批量重命名的局限性
mv 命令本身不支持复杂的批量重命名,例如基于正则表达式替换或序号递增等操作,若需批量处理,需结合 for 循环或 rename 命令实现。

批量重命名利器:rename 命令
当需要批量修改文件名时,mv 命令会显得力不从心,rename 命令便能发挥强大作用。rename 命令支持基于 Perl 正则表达式的模式匹配和替换,能够高效处理复杂的批量重命名需求。
rename 命令的两种版本
需注意,rename 命令存在两个主流版本:Perl 版和 C 版,两者的语法和功能差异较大。
- Perl 版:默认在 Ubuntu、Debian 等系统中安装,语法为
rename 'perlexpr' files,通过 Perl 表达式进行替换。 - C 版:默认在 CentOS、RHEL 等系统中安装,语法为
rename options 'expr' files,功能相对简单。
本文以更强大的 Perl 版为例进行说明。
基本批量替换操作
Perl 版 rename 的核心是通过 s/原模式/新模式/ 进行替换,将当前目录下所有 .txt 文件的后缀改为 .md:
rename 's/\.txt$/\.md/' *.txt
s/:表示替换操作;\.txt:匹配.txt(需转义 );- 表示行尾,确保只匹配文件后缀;
\.md:替换为.md。
再如,将文件名中的 old_word 替换为 new_word:
rename 's/old_word/new_word/' *
批量添加前缀或后缀
通过正则表达式可以灵活地为文件名添加前缀或后缀,为所有 .jpg 文件添加前缀 photo_:
rename 's/^/photo_/' *.jpg
^:表示行首,匹配文件名开头。
为所有 .log 文件添加后缀 _backup:

rename 's/$/_backup/' *.log
- 表示行尾,匹配文件名末尾。
批量删除特定字符
若需删除文件名中的部分字符,可通过替换为空实现,删除所有文件名中的 temp_ 前缀:
rename 's/temp_//' *
结合序号批量重命名
在整理文件时,常需要为文件添加序号,将 file1.txt、file2.txt 改名为 doc_001.txt、doc_002.txt:
rename -n 's/^/doc_/' *.txt && rename -n 's/\.txt$/sprintf("_%03d.txt", $1)/e' *file*.txt
-n:预览操作(不实际执行),确认无误后去掉-n;sprintf:格式化序号,%03d表示三位数字,不足补零。
高级技巧:结合 Shell 脚本实现复杂重命名
对于更复杂的重命名需求(如根据修改时间、文件大小等条件重命名),可以结合 Shell 脚本和 for 循环实现,将当前目录下按修改时间排序的文件重命名为 file_001、file_002 等:
#!/bin/bash
i=1
for file in $(ls -lt | awk '{print $9}'); do
mv "$file" "file_$(printf "%03d" $i).${file##*.}"
((i++))
done
ls -lt:按修改时间降序列出文件;awk '{print $9}':提取文件名;${file##*.}:提取文件后缀;printf "%03d" $i:生成三位序号。
注意事项与最佳实践
- 备份重要文件:批量重命名操作前,建议使用
cp -r备份原目录,避免误操作导致数据丢失。 - 预览操作:使用
rename的-n参数或mv的mv -i(交互模式)预览或确认覆盖操作。 - 避免特殊字符:文件名中避免使用 、、 等特殊字符,以免导致命令解析错误。
- 检查命令版本:使用
rename --version确认当前系统支持的rename版本,避免语法差异导致失败。
Linux 下的文件重命名操作,从基础的 mv 命令到功能强大的 rename 工具,再到结合 Shell 脚本的定制化方案,能够满足从简单到复杂的各种需求,掌握这些命令的核心语法和实际应用场景,不仅能提升日常文件管理的效率,更能为系统运维、自动化脚本编写等高级操作打下坚实基础,在实际使用中,建议结合具体场景选择合适的工具,并通过预览和备份确保操作的安全性。

















