1. 程式人生 > >rename命令中正則表達式的使用

rename命令中正則表達式的使用

執行權 bsp png mod 格式 har gpo 命令 .sh

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/

rename命令中正則表達式的使用