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
========================================================================================
轉自:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.