Shell批量改名

========================================================================================
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
-v, --verboseVerbose: print names of files successfully renamed.
-n, --no-actNo Action: show what files would have been renamed.
-f, --forceForce: overwrite existing files.
簡單的rename使用命令:
字母的替換
rename "s/AA/aa/" *             //把文件名中的AA替換成aa
修改文件的後綴
rename "s/.html/.php/" *     //把.html 後綴的改成 .php後綴
批量添加文件後綴
rename "s/$/.txt/" *             //把所有的文件名都以txt結尾
批量刪除文件名
rename "s/.txt//" *               //把所有以.txt結尾的文件名的.txt刪掉

一條命令:
rename "s/.JPG/.jpg/" *
就完成了全部工作。

========================================================================================
用法:

1.將你要改名的文件都放在同一個文件夾下,運行”ls -l > oldnames”,然後“vi oldnames”,這時候看到的大概是這個樣子:

total 1224
drwxrwxr-x   3 yanpeng yanpeng    4096 Sep 17 16:13 app
drwxrwxr-x   2 yanpeng yanpeng    4096 May 19  2009 bin
drwxrwxr-x   2 yanpeng yanpeng    8192 Jan 26 16:40 docpay
2.輸入”ctrl+v”,移動光標,選中要刪除的那一堆內容,其實就是文件名前面的那些列,輸入“d”,得到的文件大概爲

app
bin
docpay
3.刪除掉第一行的空行,保存退出vi,然後”cp oldnames newnames”。

4.修改newnames文件中想要改名的文件爲新文件名

5.將change_name.sh腳本放在你的那個放置文件的夾下,運行./change_name.sh就可以了(注意有執行權限,加執行權限的方法chmod a+x change_name.sh)

change_name.sh腳本內容,拷貝下,存好就能用了


#!/bin/sh

OLDNAMES='oldnames'
NEWNAMES='newnames'

fileline=`sed -n '$=' $OLDNAMES`
echo $fileline

index=1
while [ $index -le $fileline ]
do
oldname=`sed -n "${index}p" $OLDNAMES`
newname=`sed -n "${index}p" $NEWNAMES`
mv $oldname $newname
index=`expr $index + 1`
done
========================================================================================

轉自:

發佈了20 篇原創文章 · 獲贊 52 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章