操作系统 
首页 > 操作系统 > 浏览文章

举例讲解Linux中的重命名命令rename的使用方法

(编辑:jimmy 日期: 2025/1/7 浏览:3 次 )

rename 用于 对文件进行命名管理,可进行批量命名并支持正则表达式, rename命令存在两个版本用法上有所区别 一个是 C语言版本支持通配符,另一个是 Perl版本.支持正则表达式

命令格式:
Usage: rename [-v] [-n] [-f] perlexpr [filenames]

参数说明:
v 显示文件重命名的细节
n 不执行重命名,但会模拟执行重命名,并显示会出现的情况,例如是否会有同名文件冲突等。在重命名前测试很有用。
f 强制覆盖同名文件
 
常用通配符说明
 ?    表示一个任意字符
 *    表示一个或一串任意字符

常用正则表达式符号说明
^    匹配输入的开始位置
$    匹配输入的结尾
.    匹配除换行符外的任意字符
+    匹配前一个字符一次或多次 例如,"zo+"可以匹配"zoo",但不匹配"z"
[a-z]    表示某个范围内的字符,例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字符。
[^m-z]    否定的字符区间。与不在指定区间内的字符匹配。

例子1:显示重命名细节
使用touch命令创建3个txt文件,使用rename命令批量将所有后缀为txt重命名为log

复制代码代码如下:
touch a.txt
touch b.txt
touch c.txt
rename -v 's/.txt/.log/' *.txt

v 参数作用,显示文件重命名细节

复制代码代码如下:
fdipzone@ubuntu:~$ rename -v 's/.txt/.log/' *.txt
a.txt renamed as a.log
b.txt renamed as b.log
c.txt renamed as c.log


例子2:测试重命名是否遇到同名

复制代码代码如下:
touch a.txt
touch b.txt
touch c.txt
touch a.log
touch b.log
rename -n 's/.txt/.log/' *.txt

n 参数作用,不执行重命名,但会显示如果执行重命名会出现的同名情况

复制代码代码如下:
fdipzone@ubuntu:~$ rename -n 's/.txt/.log/' *.txt
a.txt not renamed: a.log already exists
b.txt not renamed: b.log already exists
c.txt renamed as c.log


例子3:强制覆盖同名文件

复制代码代码如下:
touch a.txt
touch b.txt
touch a.log
touch b.log
rename -f 's/.txt/.log/' *.txt

如果使用 v 参数,会因为同名文件存在而重命名失败

复制代码代码如下:
fdipzone@ubuntu:~$ rename -v 's/.txt/.log/' *.txt
a.txt not renamed: a.log already exists
b.txt not renamed: b.log already exists

f 参数作用,强制覆盖同名文件

复制代码代码如下:
fdipzone@ubuntu:~$ rename -fv 's/.txt/.log/' *.txt
a.txt renamed as a.log
b.txt renamed as b.log

执行后,a.txt与b.txt重命名为a.log与b.log,覆盖原来的a.log与b.log

上一篇:详解Linux系统中的进程初始化配置文件inittab
下一篇:Linux系统中tr命令的基本使用教程
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?