阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

用一个实例讲解rename命令中正则表达式的使用

66次阅读
没有评论

共计 1037 个字符,预计需要花费 3 分钟才能阅读完成。

rename 命令 用字符串替换的方式批量改变文件名。今天以一个例子来具体写一下自己遇到的问题并且解决的例子。希望对大家有帮助。

格式如下:

rename 原字符串  目标字符串  文件(列表)
  1. 原字符串:将文件名需要替换的字符串;
  2. 目标字符串:将文件名中含有的原字符替换成目标字符串;
  3. 文件:指定要改变文件名的文件列表。
举例:
将 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 支持正则表达式

现在以一个具体的例子讲解该命令中正则表达式的使用:

今天下午我手中的数据(图片)命名是(1).jpg、(2).jpg…… 到(16720).jpg。

现在我想要把文件名改为 00001.png、00002.png、…….16720.png

第一步:将后缀名.jpg 改成.png

rename 's/\.jpg$/\.png/' *.jpg

第二步:讲左括号 ”(“ 去掉:

rename 's/^\(//' *.png

第三步,将右括号“)”去掉:

rename 's/\)//' *.png

第四步:将文件名字改成五位数,不足五位数的前面补 0 即可。创建脚本 a.sh 完成,脚本内容如下:

#!/bin/bash
for i in {1..9}
do 
   mv $i.png  0000$i.png
done
for i in {10..99}
do 
   mv $i.png  000$i.png
done
for i in {100..999}
do 
   mv $i.png  00$i.png
done
for i in {1000..9999}
do 
   mv $i.png  0$i.png
done

然后将该脚本文件和需要更改文件名的文件夹下,我们直接执行该脚本即可。

如果此时看到“权限不够”那就加上执行权限即可。

chmod  755 a.sh

至此,我们已经完成了任务,如果有不理解的地方,请给我留言。如果转载,请标明出处:http://www.cnblogs.com/wongyi/

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1037字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中