Linux的 rename 命令有兩個版本,一個是C語言版本的,一個是Perl語言版本的,早期的Linux發行版基本上使用的是C語言版本的,現在已經很難見到C語言版本的了,因為Perl版本的支持正則處理,所以功能更加強大,已經不再需要C語言版本的了。
如何區分系統裡的rename命令是哪個版本的?
輸入 man rename 看到第一行是
RENAME(1) Linux Programmer’s Manual RENAME(1)
那麼 這個就是C語言版本的。
而如果出現的是:
RENAME(1) Perl Programmers Reference Guide RENAME(1)
這個就是Perl版本的了!
兩個版本的語法差異:
C語言的,按照man上面的注解,
rename的語法格式是:
rename from to file
這個命令有三個參數,分別是 from : 修改什麼名字, to:改成什麼名字, file 需要修改的文件是哪些。
用法示例:
比如,有一批文件,都是以 log開頭的, log001.txt, log002.txt ....... 一直到 log100.txt
現在想要把這批文件的log全部替換為 history
rename log history log*
這句命令的意思很明白了,把 以 log開頭的所有文件中的 log字符替換為 history
這樣替換後的文件是: history001.txt, history002.txt ..... 一直到 history100.txt
rename C語言版本的另一個man示例是把後綴名批量修改,
比如我們要將所有 jpeg的後綴名圖片文件修改為 jpg文件。
rename .jpeg .jpg *.jpeg
這樣,所有以 .jpeg擴展的後綴名全部被修改為 .jpg
現在總結一下rename C語言版本所能實現的功能: 批量修改文件名,結果是每個文件會被用相同的一個字符串替換掉!也就是說,無法實現諸如循環 然後按編號重命名!