)
Linux命令-rename批量重命名文件命令语法Perl 版本常用选项场景化实例1. 批量修改文件扩展名2. 统一文件名大小写3. 添加和删除前缀/后缀4. 替换文件名中的空格和特殊字符5. 编号批量重命名6. 实战照片批量整理7. 使用复杂正则表达式util-linux 版本差异安全使用始终先预览最佳实践快速参考rename命令使用Perl 正则表达式批量重命名文件语法简洁强大一条命令即可完成传统方法需要循环数十行代码的批量重命名操作。注意区分 Perl 版本rename和 util-linux 版本rename.ul。提示Debian/Ubuntu 默认安装的是 Perl 版本/usr/bin/rename语法为rename s/原模式/新模式/ 文件。RHEL/CentOS 的rename来自 util-linux语法不同。命令语法Perl 版本rename[选项]s/搜索模式/替换模式/[修饰符]文件...rename[选项]表达式文件...常用选项选项说明-n干运行只显示会发生的更改而不实际执行-v详细模式显示每个重命名操作-f强制覆盖已存在的目标文件-d不重命名目录部分只改文件名本身场景化实例1. 批量修改文件扩展名# 预览效果不实际修改rename-ns/\.txt$/\.md/*.txt# 执行修改rename-vs/\.txt$/\.md/*.txt# 输出示例# file1.txt renamed as file1.md# file2.txt renamed as file2.md2. 统一文件名大小写# 全部转为小写rename-vy/A-Z/a-z/*.JPG *.PNG# 全部转为大写rename-ny/a-z/A-Z/*.jpg# 仅首字母大写rename-ns/^(\w)/\u$1/*.txt3. 添加和删除前缀/后缀# 添加前缀rename-vs/^/backup_/*.log# 添加日期前缀rename-vs/^/20260614_/*.csv# 删除前缀rename-vs/^old_//old_*.dat# 添加后缀扩展名前rename-vs/\.conf$/_bak.conf/*.conf4. 替换文件名中的空格和特殊字符# 空格替换为下划线rename-vs/ /_/g*# 删除特殊字符只保留字母数字和下划线rename-ns/[^a-zA-Z0-9_.]/_/g*# 多个空格合并为一个rename-vs/\s/_/g*5. 编号批量重命名#!/bin/bash# 按顺序编号文件counter1forfilein*.jpg;donew_name$(printfphoto_%03d.jpg$counter)mv-v$file$new_name((counter))done6. 实战照片批量整理#!/bin/bash# 将相机照片按日期重命名rename-ns/IMG_(\d{4})(\d{2})(\d{2})_(\d{6})/Photo_$1-$2-$3_$4/IMG_*.jpgrename-vs/DSC_(\d{4})/2026_Trip_$1/DSC_*.jpg# 验证结果ls-1Photo_*2/dev/null|head-5echo---ls-12026_Trip_*2/dev/null|head-57. 使用复杂正则表达式# 将 report-2026-Jun-14.txt 改为 2026-06-14-report.txtrename-ns/^(\w)-(\d{4})-(\w)-(\d{2})/$2-06-$4-$1/*.txt# 提取并重新排列日期rename-vs/^(\d{2})-(\d{2})-(\d{4})/$3-$1-$2/*.log# 删除文件中的版本号rename-ns/_v\d\.\d\.\d//*_v*.tar.gzutil-linux 版本差异# RHEL/CentOS 的 rename 语法util-linux# rename 原字符串 新字符串 目标文件# 示例将 .txt 替换为 .mdrename.txt .md *.txt# 如何确定你用的是哪个版本rename--version21|head-1# Perl 版输出: /usr/bin/rename using File::Rename# util-linux 版输出: rename from util-linux X.XX安全使用始终先预览# 安全操作三步法# 第1步列出匹配文件ls*.txt# 第2步干运行预览rename-ns/\.txt$/\.md/*.txt# 第3步确认无误后执行rename-vs/\.txt$/\.md/*.txt# 错误处理如需撤回# 注rename 没有内置撤销功能可手动逆向操作ls*.mdrename-vs/\.md$/\.txt/*.md最佳实践永远先用-n预览确认无误后再用-v执行。复杂操作前先备份tar czf backup.tar.gz *。# 标准安全流程tarczf backup_$(date%Y%m%d).tar.gz.# 备份rename-ns/pattern/replacement/*# 预览rename-vs/pattern/replacement/*# 执行