rename命令中正則表達式的使用
阿新 • • 發佈:2018-01-15
執行權 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命令中正則表達式的使用