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

admin7个月前笔记81

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


相关文章

Mysql数据库“消失”的对象校验

一、前言最近在配合系统开发商进行上线的过程中,遇到了一个问题,从这个问题上,可以看到mysql数据库中虽然尽可能的想要为我们提供一些更加安全、便捷的功能,但是貌似却仍然存在一些不合理之处。环境如下:名...

如何搭建一台属于自己的 NAS

如何搭建一台属于自己的 NAS

NAS 想必很多同学都听过,即网络附加存储(Network Attached Storage),它主要干的事情就是储存,主打一个大容量,几十 TB 的储存大小那是正常的情况,并且还能构建磁盘阵列(RA...

在 Linux 下使用任务管理器

在 Linux 下使用任务管理器

有很多 Linux 初学者经常问起的问题,“Linux 有任务管理器吗?”,“怎样在 Linux 上打开任务管理器呢?”来自 Windows 的用户都知道任务管理器非常有用。你可以...

解析Tomcat性能优化N种方法

Tomcat在各位JavaWeb从业者常常就是默认的开发环境,但是Tomcat的默认配置作为生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. 幸好Tomcat还有很多的提升空间.下文介...

使用本地 eclipse 调试服务器代码

使用本地 eclipse 调试服务器代码

设置eclipse首先是启动jar程序的时候,需要设置-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,addr...

MySQL 8 主从延迟监控

MySQL 8 主从延迟监控

我们中的许多老 MySQL DBA 都会使用 SHOW REPLICA STATUS 中Seconds_Behind_Source 来查找(异步)复制的状态和监控延迟。请注意新术语,以前的版本中我们执...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。