作畢業設計,在將windows上的jsp網頁移植到linux環境中時,發現一個個的轉換編碼及修改默認編碼類型太慢,寫此腳本進行嘗試文件遍歷~linux
很久不寫,手生了。web
- #!/bin/bash
- #
- #
- SPATH="/root/chengji/WebRoot"
- DPATH="/web"
- # 函數開始部分
- CYCLING(){
- filelist=`ls -1 $SPATH`
- for filename in $filelist ; do
- if [ -f $filename ] ; then
- echo Filename:$filename
- /usr/bin/iconv -f GBK -t UTF-8 $SPATH/$filename -o $DPATH/$filename
- #cp -pv $SPATH/$filename $DPATH/$filename 該句爲前期便利效果測試
- sed -i -e 's/gb2312/UTF-8/g' -e 's/GB2312/UTF-8/g' $DPATH/$filename
- elif [ -d $filename ] ; then
- DPATH=$DPATH/$filename
- mkdir -pv $DPATH
- cd $filename
- SPATH=`pwd`
- # Next for recurse 若是遇到目錄進行自我調用。。。實現深層遍歷
- CYCLING
- # Next Usag: basename dirname
- DPATH=`dirname $DPATH`
- SPATH=`dirname $SPATH`
- cd $SPATH
- else
- echo "File $SPATH/$filename is not a common file.Please check."
- fi
- done
- }
- # 命令開始部分
- cd $SPATH
- CYCLING
- echo "All Done."
固然,上面的代碼因爲使用了函數循環調用,顯的很臃腫。下面來一種簡單的方法,find一下:windows
- #/bin/bash
- #Auth: Mo
- #Desc:
- #
- SPATH="/root/chengji"
- DIR=WebRoot
- DPATH="/web"
- find ${DIR} -type d -exec mkdir -pv ${DPATH}/{} \;
- find ${DIR} -type f -exec iconv -f GBK -t UTF-8 {} -o ${DPATH/{} \;
- echo "The file Next Listed is not a common file or directory ,please check."
- find ${DIR} ! -type f -a ! -type d -ecec ls -l {} \;
- find $DPATH -type f -exec sed -i -e 's/gb2312/UTF-8/g' -e 's/GB2312/UTF-8/g' {} \;
- echo ' '
- echo "All Done."
bash
jsp