linux中的rename命令

rename命令用字符串替换的方式批量改变文件名。

语法 
rename(参数) 
参数 
原字符串:将文件名需要替换的字符串; 
目标字符串:将文件名中含有的原字符替换成目标字符串; 
文件:指定要改变文件名的文件列表。 
实例 
将main1.c重命名为main.c

rename main1.c main.c main1.c 
rename**支持通配符**

? 可替代单个字符 
* 可替代多个字符 
[charset] 可替代charset集中的任意单个字符 
文件夹中有这些文件foo1, …, foo9, foo10, …, foo278

如果使用rename foo foo0 foo?,会把foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0。

如果使用rename foo foo0 foo??,foo01到foo99的所有文件都被重命名为foo001到foo099,只重命名5个字符长度名称的文件,文件名中的foo被替换为foo0。

如果使用rename foo foo0 foo*,foo001到foo278的所有文件都被重命名为foo0001到foo0278,所有以foo开头的文件都被重命名。

如果使用rename foo0 foo foo0[2]*,从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换为foo。

rename支持正则表达式

字母的替换

rename “s/AA/aa/” * //把文件名中的AA替换成aa 
修改文件的后缀

rename “s//.html//.php/” * //把.html 后缀的改成 .php后缀 
批量添加文件后缀

rename “s/$//.txt/” * //把所有的文件名都以txt结尾 
批量删除文件名

rename “s//.txt//” * //把所有以.txt结尾的文件名的.txt删掉 
如我们想把文件扩展名为.bak 的文件扩展名去掉,可以这样

$ rename ‘s/.bak$//’ *.bak 
*.bak 为通配符(wildcard),会被shell展开为各个文件名 
去除文件名中的空格

$ rename ‘s/ //g’ * 
g 是global的意思,替换所有的空格为空字符(也就是删除啦) 
文件名转为小写 
$ rename ‘y/A-Z/a-z/’ * 
使用分组 
现在有一堆文件,他们的文件名模式是这样的第一部分-haha-第二部分.file ,现在要把中间的-haha- 删去并把第一部分的字符串和第二部分的字符串对调,可以这样: 
$ rename ‘s/(.)-haha-(.)(.file)/221$3/’ *.file
————————————————
版权声明:本文为CSDN博主「我叫她狗子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/w849593893/article/details/82587695

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值