shell 對一個目錄樹的遍歷及遍歷文件處理

做畢業設計,在將windows上的jsp網頁移植到linux環境中時,發現一個個的轉換編碼及修改默認編碼類型太慢,寫此腳本進行嘗試文件遍歷~

好久不寫,手生了。

 

  1. #!/bin/bash 
  2. # 
  3. # 
  4. SPATH="/root/chengji/WebRoot" 
  5. DPATH="/web" 
  6.  
  7. # 函數開始部分
  8. CYCLING(){ 
  9.   filelist=`ls -1 $SPATH` 
  10.  
  11.   for filename in $filelist ; do  
  12.     if [ -f $filename ] ; then  
  13.         echo Filename:$filename 
  14.         /usr/bin/iconv -f GBK -t UTF-8  $SPATH/$filename -o  $DPATH/$filename 
  15.         #cp -pv $SPATH/$filename  $DPATH/$filename 該句爲前期便利效果測試
  16.         sed  -i  -e  's/gb2312/UTF-8/g'  -e 's/GB2312/UTF-8/g'  $DPATH/$filename 
  17.     elif [ -d $filename ] ; then 
  18.         DPATH=$DPATH/$filename 
  19.         mkdir -pv $DPATH 
  20.         cd $filename 
  21.         SPATH=`pwd` 
  22.  
  23.     # Next for recurse 如果遇到目錄進行自我調用。。。實現深層遍歷
  24.         CYCLING 
  25.  
  26.     # Next Usag: basename dirname 
  27.         DPATH=`dirname $DPATH` 
  28.         SPATH=`dirname $SPATH` 
  29.         cd $SPATH 
  30.     else 
  31.         echo "File $SPATH/$filename is not a common file.Please check." 
  32.     fi 
  33.   done 
  34.  
  35.  # 命令開始部分
  36. cd $SPATH 
  37. CYCLING 
  38. echo "All Done." 



當然,上面的代碼由於使用了函數循環調用,顯的很臃腫。下面來一種簡單的方法,find一下:

  1.  #/bin/bash  
  2.  #Auth: Mo  
  3.  #Desc:  
  4.  # 
  5. SPATH="/root/chengji" 
  6. DIR=WebRoot 
  7. DPATH="/web"  
  8.  
  9.  find ${DIR}   -type d  -exec mkdir -pv ${DPATH}/{}  \;    
  10.       
  11.  find ${DIR}  -type f -exec  iconv -f GBK -t UTF-8  {} -o  ${DPATH/{}  \;  
  12.  
  13. echo "The file Next Listed is not a common file or directory ,please check." 
  14. find  ${DIR}  ! -type f  -a  ! -type d -ecec  ls -l {} \;  
  15.  
  16. find  $DPATH -type f -exec sed  -i  -e  's/gb2312/UTF-8/g'  -e 's/GB2312/UTF-8/g'  {} \; 
  17.  
  18. echo ' ' 
  19. echo "All Done." 


 


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章