首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用一个实例讲解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支持正则表达式

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

今天下午我手中的数据(图片)命名是(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 do mv $i.png 0000$i.png done for i in do mv $i.png 000$i.png done for i in do mv $i.png 00$i.png done for i in do mv $i.png 0$i.png done

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

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

chmod 755 a.sh

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180130A0LI7Y00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券