用一个实例讲解rename命令中正则表达式的使用
Posted Linux就该这么学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用一个实例讲解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 {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/
《Linux就该这么学》是一本基于最新Linux系统编写,面向零基础读者的技术书籍。从Linux基础知识讲起,然后渐进式地提高内容难度,详细讲解Linux系统中各种服务的工作原理和配置方式,以匹配真实生产环境对运维人员的要求,突显内容的实用性。想要学习Linux系统的读者可以点击"阅读原文"按钮了解这本书,同时这本书也适合专业的运维人员阅读,作为一本非常有参考价值的工具书!
以上是关于用一个实例讲解rename命令中正则表达式的使用的主要内容,如果未能解决你的问题,请参考以下文章