首頁 >系統教程 >Linux >用一個實例講解rename指令中正規表示式的使用

用一個實例講解rename指令中正規表示式的使用

王林
王林轉載
2024-04-07 08:04:01905瀏覽

用一個實例講解rename指令中正規表示式的使用

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

至此,我們已經完成了任務,如果有不理解的地方,請給我留言。若轉載,請標示出處:http://www.cnblogs.com/wongyi/

以上是用一個實例講解rename指令中正規表示式的使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:linuxprobe.com。如有侵權,請聯絡admin@php.cn刪除