歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux下使用Shell腳本刪除一個目錄下的所有子目錄和文件

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

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