用一個例項講解rename命令中正則表示式的使用
阿新 • • 發佈:2018-12-31
rename命令用字串替換的方式批量改變檔名。今天以一個例子來具體寫一下自己遇到的問題並且解決的例子。希望對大家有幫助。
格式如下:
rename 原字串 目標字串 檔案(列表)- 原字串:將檔名需要替換的字串;
- 目標字串:將檔名中含有的原字元替換成目標字串;
- 檔案:指定要改變檔名的檔案列表。
rename main1.c main.c main1.crename支援萬用字元
? 可替代單個字元 * 可替代多個字元 [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