2008年12月4日 星期四

「Linux」指令筆記—rename

現在的硬碟雖然大又便宜,但久沒清理還是會撐爆...,清理第一步—歸檔,無奈Linux上檔名的大小寫是有區別的,而網路上收集到的一些檔案,其檔名又臭又長又亂,所以這篇就來memo一下,大量修改檔名的好用指令—rename

跑去問"男人","他"是這麼說的:
......
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
......
For example, to rename all files matching "*.bak" to strip the exten-
sion, you might say

rename 's/\.bak$//' *.bak
......

實作上的說明:
ex. 將DoubleAxx.jpg改為doublehxx.jpg,xx為01~10:
$ rename DoubleA doubleh DoubleA*
其中的第一個參數為檔名中想要改變的字串,第二個為想變為什麼,而最後一個則表示欲改變的"範圍",但是上述命令在Debian-based下執行,會出現下列報錯:
Bareword "DoubleA" not allowed while "strict subs" in use at (eval 1) line 1.
原因出在perl script,故應改為:
$ rename 's/DoubleA/doubleh/' DoubleA*

P.S.
1. rename預設在Debian/Ubuntu中就已安裝。
2. 第一種執行方法在其他Distro(ex. Fedora)會不會也報錯,就不知道了,因還沒試過!

沒有留言: