參考:http://www.ttlsa.com/linux-command/linux-rename-command-batch-rename/
Linux下rename命令有兩種版本一種是C語言版本,一種是perl語言版本
查看版本
man renmae
第一行出現以下內容的是perl版本
User Contributed Perl Documentation
第一行出現其他的或者則是C語言版本
User Commands
PS:CentOS默認是C語言版本,Ubuntu是perl版本
C語言版本命令格式
rename from to file
說明
from 修改什么名字 to 修改成什么名字 file 文件名
舉例說明,把以下文件修改成類似html的格式
1.htm 2.htm 3.htm 4.htm 5.htm 6.htm 7.htm 8.htm 9.htm
命令如下,把htm修改成html 使用*.htm批量匹配文件
rename htm html *.htm
現在總結一下rename C語言版本所能實現的功能: 批量修改文件名,結果是每個文件會被用相同的一個字符串替換掉!也就是說,無法實現諸如循環 然后按編號重命名
perl版rename格式
rename [ -h|-m|-V ] [ -v ] [ -n ] [ -f ] [ -e|-E perlexpr]*|perlexpr [ files ]
注意,perl版本的rename只有兩個參數,第一個參數為perl正則表達式,第二個參數為所要處理的文件
man rename幫助實例
1)有一批文件已.bak結尾,把.bak刪除
rename 's/\.bak$//' *
這個命令和sed里面的正則是一樣的
\. 轉義
bak$ 以bak結尾
2)把所有文件名內含有大小字母的,修改為小寫字母
rename 'y/A-Z/a-z/' *
其他列子
在文件頭部統一加hello
rename 's/^/hello/' *
把htm換成html
rename 's/htm/html/' *
在尾部加.zip
rename 's/$/.zip/' *
規則化數字編號名,比如 1.jpg, 2.jpg ..... 100.jpg , 現在要使文件名全部三位即 1.jpg .... 001.jpg
rename 's/^/00/' [0-9].jpg #把1-9前面加上00 rename 's/^/0/' [0-9][0-9].jpg #把10-99前面加上0