linux的rename命令详解
Linux rename 命令超详细详解rename是 Linux 系统中批量重命名文件 / 目录的专用命令相比mv配合循环的写法更简洁高效。但它有两个语法完全不兼容的主流实现这是绝大多数用户踩坑的根源Perl 版 renameprename功能强大支持完整 Perl 正则表达式适合复杂批量重命名Ubuntu/Debian 默认预装CentOS/RHEL 需额外安装。util-linux 版 rename语法简单仅支持固定字符串替换功能较弱CentOS/RHEL 默认预装。⚠️ 关键第一步先确认你的系统是哪个版本否则命令会完全报错或无效果。一、版本判断与安装1. 判断当前版本执行以下命令根据输出区分bash运行rename --version输出包含util-linux→ util-linux 版CentOS/RHEL 默认输出包含perl或File::Rename→ Perl 版Ubuntu/Debian 默认2. 安装对应版本bash运行# Ubuntu/Debian 安装 Perl 版系统默认已预装 sudo apt install rename # CentOS/RHEL 安装 Perl 版需先启用 EPEL 源安装后命令名为 prename避免与系统自带版本冲突 sudo yum install epel-release sudo yum install prename # CentOS/RHEL 默认自带 util-linux 版无需安装二、Perl 版 renameprename详解核心原理基于 Perl 正则表达式执行替换语法格式为s/原模式/替换模式/修饰符和 Perl 语言的替换运算符完全一致支持捕获组、大小写转换、代码执行等高级特性。基础语法bash运行rename [选项] 正则表达式 文件名列表正则表达式标准 Perl 替换格式s/匹配规则/替换内容/修饰符必须用单引号包裹避免 Shell 解析文件名列表支持通配符如*.txt、*.jpg、*核心参数表格参数含义最常用场景-n/--no-act预览模式只显示会修改的文件不实际执行重命名执行前验证效果强烈建议必用-v/--verbose显示详细的重命名过程确认执行结果-f/--force强制覆盖已存在的目标文件目标文件已存在时强制覆盖-h/--help显示帮助信息快速查阅参数高频实战示例1. 基础字符串替换bash运行# 预览将所有 .txt 文件名中第一个 old 替换为 new rename -n s/old/new/ *.txt # 实际执行 rename s/old/new/ *.txt # 全局替换文件名中所有 old 都替换为 new加 /g 修饰符 rename s/old/new/g *.txt2. 批量修改文件扩展名bash运行# 将所有 .txt 改为 .md$ 匹配文件名结尾避免误改中间字符 rename s/\.txt$/.md/ *.txt # 将所有 .jpeg 改为 .jpg rename s/\.jpeg$/.jpg/ *.jpeg3. 批量添加前缀 / 后缀bash运行# 给所有 .jpg 文件添加 prefix_ 前缀^ 匹配文件名开头 rename s/^/prefix_/ *.jpg # 给所有 .log 文件在扩展名前添加 _backup 后缀 rename s/(\.log)$/_backup$1/ *.log4. 批量删除字符串bash运行# 删除所有文件名中的 test_ 前缀 rename s/^test_// *.txt # 删除所有文件名中的 _tmp 字符串全局删除 rename s/_tmp//g *5. 大小写转换bash运行# 所有文件名转为小写 rename y/A-Z/a-z/ * # 所有文件名转为大写 rename y/a-z/A-Z/ * # 每个单词首字母大写 rename s/\b(\w)/\U$1/g *6. 批量替换空格为下划线bash运行# 将文件名中的所有空格替换为下划线解决文件名含空格的不便 rename s/ /_/g *7. 数字序号格式化补零将file1.txt、file2.txt、file10.txt统一格式化为file001.txt、file002.txt、file010.txtbash运行# /e 修饰符表示替换部分作为 Perl 代码执行 rename s/file(\d)/sprintf(file%03d, $1)/e *.txt8. 复杂文件名提取重组将2026-06-27_旅行照片_001.jpg格式重命名为001_旅行照片.jpgbash运行rename s/(\d{4}-\d{2}-\d{2})_(.*)_(\d{3})\.jpg/$3_$2.jpg/ *.jpg三、util-linux 版 rename 详解核心特点语法极简仅支持固定字符串的一对一替换不支持正则表达式、位置匹配、大小写转换仅适合最简单的批量重命名场景。基础语法bash运行rename [选项] 原字符串 新字符串 文件名列表原字符串要被替换的固定子串新字符串替换后的字符串文件名列表支持通配符⚠️ 注意默认只替换文件名中第一个匹配的原字符串并非全局替换。核心参数表格参数含义最常用场景-v/--verbose显示详细的重命名过程确认执行结果-n/--no-act预览模式只显示不执行执行前验证效果-f/--force强制覆盖已存在的目标文件目标文件已存在时强制覆盖-V/--version显示版本信息确认版本高频实战示例1. 基础字符串替换bash运行# 将所有 .txt 文件名中第一个 old 替换为 new rename old new *.txt2. 批量修改文件扩展名bash运行# 将所有 .txt 改为 .md rename .txt .md *.txt # 将所有 .jpeg 改为 .jpg rename .jpeg .jpg *.jpeg3. 批量删除字符串bash运行# 删除所有文件名中第一个 _tmp 字符串 rename _tmp *.txt4. 替换文件名中的空格bash运行# 将文件名中第一个空格替换为下划线 rename _ *5. 变通实现加前缀util-linux 版不支持直接在开头加前缀需利用文件名统一的前缀变通实现bash运行# 所有文件都以 img 开头替换 img 为 prefix_img实现加前缀 rename img prefix_img img*.jpg四、两个版本全面对比表格特性Perl 版 renameutil-linux 版 rename核心能力支持完整 Perl 正则功能极强仅支持固定子串替换功能有限语法格式rename s/old/new/ 文件rename old new 文件全局替换加/g修饰符支持❌ 默认仅替换第一个匹配项大小写转换✅ 支持❌ 不支持开头 / 结尾位置匹配✅ 支持^/$❌ 不支持只能替换任意子串序号格式化、内容重组✅ 支持❌ 不支持默认发行版Ubuntu/Debian 系列CentOS/RHEL 系列学习成本稍高需基础正则知识极低适用场景复杂批量重命名简单固定字符串替换五、高级用法与最佳实践1. 永远先预览再执行不管哪个版本执行重命名前务必加-n参数预览效果确认无误后再去掉-n实际执行这是避免数据混乱的黄金法则bash运行# Perl 版预览 rename -n s/old/new/ *.txt # util-linux 版预览 rename -n old new *.txt2. 递归批量重命名配合 findrename 默认只处理当前目录配合find可以递归处理所有子目录中的文件bash运行# Perl 版递归将所有 .txt 改为 .md find . -type f -name *.txt -exec rename s/\.txt$/.md/ {} # util-linux 版递归替换文件名中的 old 为 new find . -type f -name *old* -exec rename old new {} 加-type f只处理文件避免误改目录名。3. 处理含特殊字符的文件名两个版本都能正常处理含空格、中文、特殊符号的文件名只要通配符或 find 能匹配到即可无需额外转义。4. 与 mv 循环的选择简单场景下mv配合 for 循环也能实现批量重命名兼容性最强bash运行# 批量加前缀的 mv 写法 for file in *.jpg; do mv $file prefix_$file donerename 优势代码更简洁性能更好内置预览和防错机制mv 循环优势无需额外安装全系统兼容逻辑更灵活可控六、避坑重点版本混淆是第一大坑不要直接照搬网上的教程先确认自己系统的 rename 版本否则命令会完全报错或无效果。CentOS 用户安装 Perl 版后请使用prename命令。重名覆盖风险如果重命名后多个文件会变成同一个名字后处理的文件会覆盖先处理的文件。务必先预览确认不会出现重名冲突。目录也会被重命名rename 默认会同时匹配文件和目录如果只想处理文件务必配合find -type f使用。通配符匹配范围重命名前可用ls *.txt先确认通配符匹配的文件范围避免误改无关文件。七、常用场景速查表Perl 版常用命令表格需求命令全局替换 old 为 newrename s/old/new/g *修改 .txt 为 .mdrename s/\.txt$/.md/ *.txt添加 prefix_ 前缀rename s/^/prefix_/ *删除 test_ 前缀rename s/^test_// *空格替换为下划线rename s/ /_/g *文件名统一转小写rename y/A-Z/a-z/ *util-linux 版常用命令表格需求命令替换第一个 old 为 newrename old new *修改 .txt 为 .mdrename .txt .md *.txt删除第一个 _tmp 字符串rename _tmp *替换第一个空格为下划线rename _ *

相关新闻

基于TI C2000 FCL与SFRA的双轴PMSM伺服驱动实战指南

基于TI C2000 FCL与SFRA的双轴PMSM伺服驱动实战指南

1. 项目概述在工业伺服驱动和机器人等高精度运动控制领域,对电流、速度和位置环的控制性能要求极为苛刻。其中,电流环作为最内层的控制回路,其响应速度(即带宽)直接决定了整个系统的动态性能上限。传统基于MCU的方案&a…

2026/7/23 20:58:45 阅读更多 →
【项目编号project16578】|SpringBoot智慧小区服务管理系统:物业报修、公告缴费与社区服务一体化

【项目编号project16578】|SpringBoot智慧小区服务管理系统:物业报修、公告缴费与社区服务一体化

技术栈:SpringBoot MySQL摘要:智慧小区服务管理系统适合围绕物业服务闭环展开,包括业主信息、报修处理、公告发布、缴费记录和后台管理等模块。关键词:project16578、智慧小区服务管理系统、SpringBoot、项目实战一、项目概述智慧…

2026/7/23 20:57:45 阅读更多 →
MRAM存储器使用方法(如何使用MRAM提高边缘计算)

MRAM存储器使用方法(如何使用MRAM提高边缘计算)

在边缘计算高速发展的当下,终端设备对存储器件的延迟、功耗、稳定性与耐用性提出了严苛要求,传统存储方案已难以适配场景需求。MRAM存储器作为新一代非易失性磁性随机存取存储器件,凭借独特的物理存储架构,可实现全域随机读写操作…

2026/7/23 20:57:45 阅读更多 →

最新新闻

AI技术提升SEO关键词的优化效果与应用方法

AI技术提升SEO关键词的优化效果与应用方法

本文探讨了AI技术在SEO重要词优化中的多种应用,呈现了其如何帮助提升重要词的效果。AI在重要词挖掘中,能够通过分析用户行为和搜索趋势,快速识别高效的相关重要词。同时,在竞争分析方面,AI可以深入洞察竞争对手的策略&…

2026/7/23 21:05:48 阅读更多 →
TDA4VM SDK 7.1升级TIDL 8.4实战:内存映射与编译链协同更新指南

TDA4VM SDK 7.1升级TIDL 8.4实战:内存映射与编译链协同更新指南

1. 项目概述在嵌入式AI开发领域,尤其是基于德州仪器TDA4VM这类异构多核处理器的项目里,软件生态的版本迭代是家常便饭,但每一次升级都可能伴随着意想不到的“惊喜”。最近,为了在项目中用上TIDL(TI Deep Learning Libr…

2026/7/23 21:05:48 阅读更多 →
Spring 7 为什么要 “抛弃” Feign ?

Spring 7 为什么要 “抛弃” Feign ?

大家好,我是Java1234_小锋老师。 如果你正在把项目升级到 Spring 6或者最新版 7 / Spring Boot 4 ,大概率会在技术选型上纠结一个问题:Feign 还能继续用吗?要不要换?锋哥今天一次性把官方态度、背后的原因,…

2026/7/23 21:05:48 阅读更多 →
TI AM13E23019:集成NPU的电机控制MCU,实现边缘AI与实时控制融合

TI AM13E23019:集成NPU的电机控制MCU,实现边缘AI与实时控制融合

1. 项目概述:当电机控制遇上边缘AI 在电机控制这个领域干了十几年,我见过太多工程师的纠结:想给电机驱动器加上点“智能”,比如预测性维护、异常振动检测或者负载识别,但一算资源,CPU的算力就捉襟见肘了。要…

2026/7/23 21:05:48 阅读更多 →
分享一套锋哥原创的基于PyTorch的手写数字识别系统(深度学习+PyQt6+LetNet-5)

分享一套锋哥原创的基于PyTorch的手写数字识别系统(深度学习+PyQt6+LetNet-5)

大家好,我是Java1234_小锋老师,分享一套锋哥原创的基于PyTorch的手写数字识别系统(深度学习PyQt6LetNet-5) 项目介绍 手写数字识别是模式识别与计算机视觉领域的经典问题,在邮政分拣、票据录入、教育测评、表单数字化等场景中具有重要应用价…

2026/7/23 21:05:48 阅读更多 →
Android CameraServer PreviewFrameSpacer梳理

Android CameraServer PreviewFrameSpacer梳理

PreviewFrameSpacer 设计与实现 文件位置: device3/PreviewFrameSpacer.h / PreviewFrameSpacer.cpp 1. 问题背景 理想情况下,预览帧应按传感器输出节奏呈现给用户。但实际中,CPU 负载、请求设置差异等因素导致帧处理延迟不均匀,造成预览帧间距忽大忽小,用户感知到卡顿。…

2026/7/23 21:04:48 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻