歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux下使用Shell腳本刪除一個目錄下的所有子目錄和文件

Linux下使用Shell腳本刪除一個目錄下的所有子目錄和文件

  1. #!/bin/sh            
  2. #FileName:deleteDir.sh         
  3. #Function:Linux下使用Shell腳本刪除一個目錄下的所有子目錄和文件          
  4. #Version:V0.1            
  5. #Author:Sunrier            
  6. #Date:2012-08-01    
  7.   
  8. CURRPATH=$PWD  
  9.   
  10. #DESTPATH為刪除的目標目錄   
  11. DESTPATH="/home/Sunrier/Trash"  
  12.   
  13. #isNullDir函數判斷進入的目錄下是否存在下級子目錄或者文件   
  14. #存在返回1,不存在返回0   
  15. isNullDir()  
  16. {  
  17.     local NewCurrentPath=$PWD  
  18.     local NewDirName=$1  
  19.     cd $NewDirName  
  20.     local NewFileList=`ls 2>/dev/null`   
  21.       
  22. #   -n string : 如果字符串不為空,則結果為真     
  23.   
  24.     if [ -n "$NewFileList" ]  
  25.     then  
  26.         echo "目錄$NewDirName下列表信息為$NewFileList"  
  27.         cd $NewCurrentPath  
  28.         return 1   
  29.     else  
  30.         echo "目錄$NewDirName為空目錄"  
  31.         cd $NewCurrentPath  
  32.         return 0      
  33.     fi    
  34. }  
  35.   
  36. if [ "Sunrier" != "$LOGNAME" ]  
  37. then  
  38.     echo "您沒有執行權限!請聯系管理員!"  
  39.     exit 1    
  40. fi  
  41.   
  42. cd $DESTPATH 2>/dev/null  
  43.   
  44. if [ $? -ne 0 ]  
  45. then  
  46.     echo "沒有找到目標目錄!"  
  47.     exit 1  
  48. fi  
  49.   
  50. echo "您正准備刪除的目錄為$DESTPATH"  
  51.   
  52. #不考慮隱藏目錄和文件   
  53. FileList=`ls 2>/dev/null`  
  54.   
  55. while [ "" != "$FileList" ]  
  56. do  
  57.     echo "當前列表信息為 $FileList"  
  58.       
  59.     for pFile in $FileList  
  60.     do  
  61.         echo "加載 ${pFile} 中......"  
  62.         if [ -d ${pFile} ]  
  63.         then  
  64.             echo "檢查到 ${pFile} 為目錄 "  
  65.             echo "目錄 ${pFile} 處理中......"  
  66.               
  67. #注:在Linux的Shell腳本中,調用函數作為判斷條件時,函數返回值為0時,if後的條件才為真;否則if後的條件為假!                  
  68.             if  isNullDir "${pFile}"  
  69.             then  
  70.                 echo  "刪除目錄 ${pFile} 中......"  
  71.                 rm -rf ${pFile}  
  72.             else  
  73.                 echo "移動目錄${pFile}下的所有目錄和文件中......"  
  74.                 mv ${pFile}/* . >/dev/null 2>&1  
  75.             fi  
  76.         else  
  77.             echo "檢查到 ${pFile} 為文件 "  
  78.             echo "正在把文件 ${pFile} 的文件名更改為文件名 1 中......"  
  79.             mv ${pFile} 1 2>/dev/null  
  80.         fi  
  81.   
  82.         if [ -f 1 ]  
  83.         then  
  84.             echo "發現文件名為1的文件,正在刪除文件1中......"  
  85.             echo "123456"> 1  
  86.             rm -rf 1          
  87.         fi  
  88.     done  
  89.       
  90.     echo "更新新的文件列表中......"  
  91.     cd $DESTPATH  
  92.     FileList=`ls 2>/dev/null`  
  93.       
  94. done                  
  95.   
  96. if [ $? -eq 0 ]  
  97. then  
  98.     echo "清理成功!"  
  99.     cd $CURRPATH  
  100.     exit 0  
  101. else  
  102.     echo “"清理失敗!"  
  103.     cd $CURRPATH  
  104.     exit 1  
  105. fi  
Copyright © Linux教程網 All Rights Reserved