2015-01-18

Ubuntu 用指令更改大量檔案名稱

阿舍如果沒記錯的話,在 Windows / Dos 用指令來變更一批檔案的附檔名是件算簡單的事,只要用 * 號就可以解決了哩 ! 不過,在 Ubuntu 上就沒有這麼的簡單哩 ! 在 Ubuntu 上有個叫做「 rename」的程式是專門在做大量檔名修改的功能的,但是,這支程式其實是支 Perl 寫的 Script,所以,這個 rename 就用 Perl 的常規表示式做為條件式,啊 ! 看到常規表示式,阿舍就有點暈了哩 !

避免改錯檔,rename 指令有預覽功能哩 ! 
阿舍其實還滿喜歡這個常規表示式的,也因此才去學了 Perl,不過,常規表示式實在是太好用也太千變萬化了,所以,阿舍就一直學不起來,到現在還只是會基本、簡單的,複雜一點的還是要再查一下和多試幾遍,不過,這對沒學過的人來說,要整批換檔名就要學個正規表示式,似乎不太 OK 哩 !
還好,阿舍仔細研究了一下,發現幾個常用的更名方式都不難,只要稍微記一下就應該就會用了,下面是 rename 的基本用法,邏輯上就是把「要變更的檔案類型」中,檔案名稱裡有「檔名的原始字串」的檔名更換成「新的檔案字串」,有些看沒有懂,那就用例子來說明囉 !

rename  s/檔名的原始字串/新的檔案字串/  要變更的檔案類型

最常見的,就是更換副檔,舉例來說,阿舍要把 .html 的檔案全部都換成 .txt,所以,阿舍就可以像下面這樣下指令,多加的那個 -v 選項是讓 rename 指令把有動到的檔案都列出來,方便檢視有沒有改錯檔哩 !

rename -v s/html/txt/ *html

不過,這樣會有點風險,如果有個檔案的檔名是 html.txt 的話,就會被改成 txt.txt,所以,為保險,所以,會建議改成下面這樣會比較保險,如果要把某個副檔名改成另一個副檔名的話,只要直接把 html 和 txt 置換掉就可以了,其它的部份就照用來執行,就可以大量的更換副檔名了。

rename -v s/\.html$/\.txt/ *html

而如果是要把所有檔案的檔名中包含某字串的檔案全部更換成另一個字串的話,只要稍微改一下上面提到的第一行指令,把它的 *html 改成 * 即可,指令如下 ( 把所有檔案名稱中有 xyz 的部份都改成 aaa ,例如, xyzabc 會變成  aaaabc )。

rename -v s/xyz/aaa/ *

上面這二個是阿舍覺得 rename 指令最常用到的用法,提供參考,另外,如果你沒有把握下的指令的執行結果的話,可加上 -n 選項來預覽執行結果,確定符合預期之後再執行哩 ! rename 預設不會覆寫同檔名的檔案,可以加上 -w 選項來要求一律覆寫現有檔案哩 !  ... 

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁