Linux批量重命名有五种方法:一、用for循环配合mv命令;二、C语言版rename(字面替换);三、Perl版rename(支持正则);四、mmv命令(通配符映射);五、各rename工具的预览与安全模式。

如果您需要在Linux系统中对多个文件进行统一的名称调整,但逐一手动使用mv修改效率低下,则可借助批量重命名工具实现高效操作。以下是解决此问题的步骤:
一、使用mv命令配合循环结构
该方法适用于需添加前缀、后缀或替换固定字符串的场景,依赖shell内置的for循环与参数扩展功能,不依赖额外工具,兼容性高。
1、进入目标目录,执行以下命令为所有.txt文件添加前缀“backup_”:
2、输入命令:for file in *.txt; do mv "$file" "backup_$file"; done
3、若需将所有.jpg文件扩展名改为.png,运行:
4、输入命令:for file in *.jpg; do mv "$file" "${file%.jpg}.png"; done
5、执行前建议先用echo测试效果,例如:for file in *.txt; do echo "mv $file backup_$file"; done
二、使用C语言版本rename命令
该版本在CentOS 7等系统中默认提供,语法简洁,采用“原字符串 新字符串 文件列表”三参数形式,适合简单字符串替换和后缀统一修改。
1、确认当前rename版本:执行rename --version,若输出含“util-linux”,即为C语言版。
2、将当前目录下所有以“log”开头的文件名中的“log”替换为“history”:
3、输入命令:rename log history log*
4、将所有.jpeg文件扩展名批量改为.jpg:
5、输入命令:rename .jpeg .jpg *.jpeg
6、注意:C语言版不支持正则表达式,仅作字面匹配与替换。
三、使用Perl版本rename命令
该版本在Ubuntu、Debian等系统中默认安装,支持完整Perl正则语法,可实现复杂模式匹配、大小写转换、数字格式化等高级重命名逻辑。
1、确认版本:执行rename --version,若显示“Perl Programmers Reference Guide”,即为Perl版。
2、移除所有.bak文件的.bak后缀:
3、输入命令:rename 's/\.bak$//' *.bak
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
4、将所有文件名中的“report”替换为“review”:
5、输入命令:rename 's/report/review/' *
6、将所有大写.JPG扩展名转为小写.jpg:
7、输入命令:rename 'y/A-Z/a-z/' *.JPG
四、使用mmv命令进行通配符映射重命名
mmv命令通过位置占位符(如#1、#2)实现源文件名各段到新文件名的精准映射,适合结构化文件名的批量重构,需单独安装。
1、在Debian/Ubuntu系统中安装mmv:sudo apt install mmv
2、将形如“file001.txt”、“file002.txt”的文件重命名为“doc001.txt”、“doc002.txt”:
3、输入命令:mmv 'file#1.txt' 'doc#1.txt'
4、将“image-01-small.jpg”重命名为“img_01.jpg”:
5、输入命令:mmv 'image-#1-#2.jpg' 'img_#1.jpg'
6、注意:mmv默认启用安全模式,遇冲突会报错,可加-g参数强制覆盖。
五、使用rename的预览与安全模式
无论使用C语言版或Perl版rename,均可通过特定选项避免误操作导致的数据丢失,提升操作可靠性。
1、执行模拟运行,仅显示将要发生的更改而不实际执行:
2、输入命令:rename -n 's/old/new/' *.txt
3、启用详细输出,每项操作均打印原始名与目标名:
4、输入命令:rename -v 's/section/chapter/' *.md
5、对于Perl版,还可结合-e选项执行Perl代码逻辑,例如补零编号:rename -v 's/(\d+)/sprintf("%03d", $1)/e' image?.jpg

















