在Linux系统中修改文件或目录的名称是非常基础且常用的操作,系统内置了多个命令支持改名需求,不同命令的适用场景有所区别,用户可以根据实际需求选择合适的工具完成操作。

使用mv命令改名
mv是Linux中移动文件或目录的命令,同时也可以用来修改单个文件或目录的名称,它的语法格式非常简单,基本用法如下:
# 修改文件名称,将old_filename改为new_filename mv old_filename new_filename # 修改目录名称,将old_dir改为new_dir mv old_dir new_dir
使用mv命令改名时需要注意几个问题,如果新名称已经存在,系统会直接覆盖已有的文件或目录,不会给出提示。如果希望避免误覆盖,可以添加-i参数开启交互模式,系统会在覆盖前询问用户是否确认操作:
# 开启交互模式改名,避免误覆盖 mv -i old_filename new_filename
如果要修改的文件或目录不在当前工作目录,需要指定完整的路径,示例如下:
# 修改指定路径下的文件名称 mv /home/test/old.txt /home/test/new.txt # 修改指定路径下的目录名称 mv /home/test/old_dir /home/test/new_dir
使用rename命令批量改名
如果需要同时修改多个文件或目录的名称,使用mv命令逐个操作效率很低,这时候可以使用rename命令,它支持通过正则表达式匹配批量处理名称,适合大批量重命名场景。
rename命令有两种常见的版本,一种是Perl版本的rename,一种是C语言版本的rename,不同版本的使用语法略有区别,可以通过man rename命令查看当前系统安装的版本说明。下面以Perl版本的rename为例介绍常用用法:
批量修改文件后缀
将当前目录下所有.txt后缀的文件改为.md后缀,命令如下:
# 批量将txt后缀改为md后缀 rename 's/.txt$/.md/' *.txt
批量添加文件名前缀
给当前目录下所有图片文件添加img_前缀,命令如下:
# 批量添加前缀,匹配所有jpg文件 rename 's/^/img_/' *.jpg
批量删除文件名中的指定字符
删除当前目录下所有文件名中的test_前缀,命令如下:
# 批量删除文件名中的test_前缀 rename 's/^test_//' *
如果不确定rename命令的执行效果,可以先添加-n参数模拟执行,查看会修改哪些文件,确认无误后再去掉-n参数执行真正的重命名操作:
# 模拟执行,查看修改效果不实际修改 rename -n 's/.txt$/.md/' *.txt
改名操作的注意事项
- 改名操作前建议先确认目标名称不存在,避免误覆盖重要文件,尤其是使用mv命令没有加
-i参数的时候。 - 使用rename命令的正则表达式时,要注意匹配规则的正确性,避免误修改不需要改名的文件。
- 如果修改的是系统关键目录或文件的名称,需要先确认操作的影响,避免导致系统运行异常。
- 普通用户只能修改自己有权限的文件或目录的名称,修改其他用户的文件需要获取对应的权限或者使用sudo命令。
除了上述两种命令,部分Linux桌面环境也提供了图形化的改名方式,在文件管理器中选中文件或目录,右键选择重命名选项即可操作,适合不熟悉命令行的用户使用。但命令行方式效率更高,也更适合远程操作服务器等没有图形界面的场景。