rename
出自DebianWiki
rename 是包含於 DebianPackages:perl 中的一個指令,你可以透過這個指令使用正規表示法來快速的改變多個檔案的檔名。
例如,將檔名全部改為小寫
$ ls BAR.c FOOBAR.c FOO.c $ rename -v 'y/A-Z/a-z/' *.c BAR.c renamed as bar.c FOOBAR.c renamed as foobar.c FOO.c renamed as foo.c $ ls bar.c foobar.c foo.c
將檔名改為 .bak
$ ls bar.c foobar.c foo.c $ rename -v 's/$/.bak/' *.c bar.c renamed as bar.c.bak foobar.c renamed as foobar.c.bak foo.c renamed as foo.c.bak $ ls bar.c.bak foobar.c.bak foo.c.bak
更改檔名開頭與結尾 例:abc* 改為 def* 及 *xyz 改為 *uvw
$ ls abc01.xyz abc02.xyz abc03.xyz $ rename 's/abc/def/' abc* $ls def01.xyz def02.xyz def03.xyz $ rename 's/xyz/uvw/' *xyz $ls def01.uvw def02.uvw def03.uvw
rename 's/abc/def/' abc* 中 "s"表字串,"abc"為原來的名稱,"def"為改完的名稱,"abc*"表要改的檔名為abc開頭 rename 's/xyz/uvw/' *xyz 中 "*xyz"表要改的檔名為xyz結尾
如果有非常多檔案位於不同的目錄,可以搭配 find 使用
$ ls
bar.c.bak foobar.c.bak foo.c.bak
$ find . -type f -name \*.bak -exec rename -v 's/\.bak$//' {} \;
./foo.c.bak renamed as ./foo.c
./bar.c.bak renamed as ./bar.c
./foobar.c.bak renamed as ./foobar.c
$ ls
bar.c foobar.c foo.c
![[Main Page]](/upload/4/49/Debian_taiwan_out.png)