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  

相关内容