在linux系统中,修改文件名是文件管理的基础操作,不管是调整单个文件的命名,还是批量修改多个文件的名称,都有成熟的命令可以直接使用,不需要复杂的操作逻辑。

单文件修改文件名:mv命令
mv命令是linux中最基础的文件移动和重命名命令,当源文件和目标文件在同一个目录下时,就可以实现文件重命名的效果。
基本语法
mv命令修改文件名的基本格式如下:
mv [原文件名] [新文件名]
使用示例
假设当前目录下有一个名为test.txt的文件,要将其重命名为demo.txt,执行以下命令即可:
# 将test.txt重命名为demo.txt mv test.txt demo.txt
如果需要修改文件到指定目录并重命名,也可以直接在目标路径中指定新文件名,例如将当前目录的test.txt移动到/home/user/doc目录下并重命名为new_test.txt:
mv test.txt /home/user/doc/new_test.txt
批量修改文件名:rename命令
当需要同时修改多个文件的名称时,使用mv命令逐个操作效率很低,这时候可以使用rename命令批量处理,rename命令支持基于正则表达式的批量重命名规则。
基本语法
不同linux发行版的rename命令语法略有差异,主流的两种格式如下:
- Perl版本rename(常见于Ubuntu、Debian等发行版):rename 's/原字符串/新字符串/' 文件列表
- C语言版本rename(常见于CentOS、RHEL等发行版):rename 原字符串 新字符串 文件列表
使用示例
假设当前目录有file1.txt、file2.txt、file3.txt三个文件,要将所有txt后缀改为md后缀,使用Perl版本rename命令的操作如下:
# 将所有.txt结尾的文件后缀改为.md rename 's/.txt$/.md/' *.txt
如果是C语言版本的rename命令,实现同样的txt改md后缀操作:
# C语言版本rename批量修改后缀 rename .txt .md *.txt
如果要批量给文件名添加前缀,比如给所有md文件添加backup_前缀:
# Perl版本给文件添加前缀 rename 's/^/backup_/' *.md
注意事项
- 使用mv命令修改文件名时,如果新文件名已经存在,默认会直接覆盖原文件,建议操作前确认目标文件名不存在,或者添加-i参数开启覆盖确认:
mv -i test.txt demo.txt - rename命令的正则表达式规则需要准确,操作前可以先使用-n参数预览修改效果,确认无误后再去掉-n参数执行真实修改:
rename -n 's/.txt$/.md/' *.txt - 如果文件名包含空格等特殊字符,使用命令时需要将文件名用单引号包裹,避免解析错误:
mv 'old file name.txt' 'new file name.txt'