Linux下rename命令的用法(適合大批量修改檔案名稱),linuxrename
Linux下rename命令的用法(適合大批量修改檔案名稱)
在看鳥哥私房菜的時候,遇到了mv這個可以修改檔案名稱的命令。後面還有一個命令,叫rename。鳥哥讓自己man協助查詢。結果自己一看,發現這個命令居然可以批量的修改檔案名稱。
首先,看下man協助裡面的說明:
For example, given the files
foo1, ..., foo9, foo10, ..., foo278, the commands
rename foo foo0 foo
rename foo foo0 foo
will turn them into foo001, ..., foo009, foo010, ..., foo278.
And
rename .htm .html *.htm
will fix the extension of your html files.
man協助裡給我們舉了兩個例子,什麼意思呢,就是利用rename foo foo0 foo 類似這種命令,可以批量修改foo1,foo2,foo3這種有規律的檔案名稱。rename的一共有三個參數,第一個參數是要修改的部分,第二個參數是修改成什麼的部分,第三個是修改哪些檔案。
還是要做實驗,說的比較繞。
我們先在目錄下建六個檔案好了,分別是foo1,foo2,foo11,foo22,foo111,foo222
[root@centos-01test]# ls
foo1 foo11 foo111 foo2 foo22 foo222
現在我什麼目的呢,就是要把foo後面不夠三位的,前面用0代替,比如foo1修改成為foo001,foo22修改成為foo022,foo111和foo222不變。
那我們該怎麼做呢,首先,我用這個命令:rename foo foo0 foo
是萬用字元,代表一個字元,也就是我會把名字為foo這些檔案的foo部分修改成為foo0。大家想想會有什麼變化。
[root@centos-01test]# rename foo foo0 foo
[root@centos-01test]# ls
foo01 foo02 foo11 foo111 foo22 foo222
看到了嗎,foo就代表四個字元,並且含有foo的檔案。我們用命令把foo修改成為了foo0,所以才會有這樣的效果。接下來我們再使用這個命令:rename foo foo0 foo
[root@centos-01test]# rename foo foo0 foo
[root@centos-01test]# ls
foo001 foo002 foo011 foo022 foo111 foo222
看到了吧,foo這種五個字元的都會被修改。看到這裡大家就會發現,rename這個命令,一是掌握結構,而是學會用萬用字元。
下面,我們換幾個萬用字元實驗。*代表任一字元
[root@centos-01test]# ls
foo001 foo002 foo011 foo022 foo111 foo222
[root@centos-01test]# rename foo ofo *
[root@centos-01test]# ls
ofo001 ofo002 ofo011 ofo022 ofo111 ofo222
[root@centos-01test]# rename ofo ccc ofo*1
[root@centos-01test]# ls
ccc001 ccc011 ccc111 ofo002 ofo022 ofo222
[root@centos-01test]# rename 1 c ccc*
[root@centos-01test]# ls
ccc00c ccc0c1 cccc11 ofo002 ofo022 ofo222//大家注意到,是從第一個出現1的時候更換的
比如我們還可以修改結尾檔案名稱相似的。
[root@centos-01bobo]# ls
1.htm 2.htm 3.htm 4.htm 5.mmm
[root@centos-01bobo]# rename .htm .html *.htm
[root@centos-01bobo]# ls
1.html 2.html 3.html 4.html 5.mmm
[root@centos-01bobo]# rename .html @html *.html
[root@centos-01bobo]# ls
1@html 2@html 3@html 4@html 5.mmm
怎麼樣,是不是這個命令挺強大的。不過,大批量的建立和修改檔案還是用指令碼比較快速和靈活。