cleanup_scripts.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #!/bin/bash
  2. # 项目文件清理脚本 - 删除非必要的临时脚本文件
  3. set -e
  4. echo "============================================="
  5. echo " 项目文件清理脚本 "
  6. echo "============================================="
  7. # 颜色定义
  8. RED='\033[0;31m'
  9. GREEN='\033[0;32m'
  10. YELLOW='\033[1;33m'
  11. NC='\033[0m' # No Color
  12. echo_info() {
  13. echo -e "${GREEN}[信息]${NC} $1"
  14. }
  15. echo_warn() {
  16. echo -e "${YELLOW}[警告]${NC} $1"
  17. }
  18. echo_error() {
  19. echo -e "${RED}[错误]${NC} $1"
  20. }
  21. echo_success() {
  22. echo -e "${GREEN}[成功]${NC} $1"
  23. }
  24. # 需要保留的重要脚本文件
  25. IMPORTANT_FILES=(
  26. "deploy.sh" # 统一部署脚本
  27. "install_arm_ubuntu.sh" # 安装脚本(根据README_INSTALL.md)
  28. "cleanup_scripts.sh" # 当前清理脚本自身
  29. )
  30. # 额外删除的特定文件
  31. EXTRA_FILES_TO_DELETE=(
  32. "deploy_to_remote.sh"
  33. "install_dependency_and_restart.sh"
  34. "create_fix_script.py"
  35. "fix_duplicate_app.py"
  36. "fix_socketio.py"
  37. )
  38. # 函数:检查文件是否为重要文件
  39. is_important_file() {
  40. local filename="$1"
  41. for important_file in "${IMPORTANT_FILES[@]}"; do
  42. if [[ "$filename" == "$important_file" ]]; then
  43. return 0 # 是重要文件
  44. fi
  45. done
  46. return 1 # 不是重要文件
  47. }
  48. # 要删除的脚本模式列表
  49. SCRIPT_PATTERNS=(
  50. "fix_*.sh"
  51. "test_*.sh"
  52. "test_*.py"
  53. "check_*.sh"
  54. "upload_*.sh"
  55. "restart_*.sh"
  56. "simple_*.sh"
  57. "direct_*.sh"
  58. "multiline_*.sh"
  59. "verify_*.sh"
  60. "force_*.sh"
  61. "kill_*.sh"
  62. "correct_*.sh"
  63. "final_*.sh"
  64. "create_*.sh"
  65. "remote_*.py"
  66. )
  67. # 统计要删除的文件数量
  68. declare -i total_files=0
  69. # 收集所有要删除的文件
  70. declare -a files_to_delete
  71. # 添加额外指定的文件
  72. for file in "${EXTRA_FILES_TO_DELETE[@]}"; do
  73. if [[ -f "$file" ]]; then
  74. files_to_delete+=("$file")
  75. echo_info " 标记删除(额外): $file"
  76. ((total_files++))
  77. fi
  78. done
  79. for pattern in "${SCRIPT_PATTERNS[@]}"; do
  80. echo_info "查找匹配模式: $pattern"
  81. # 查找匹配的文件,但排除重要文件
  82. while IFS= read -r file; do
  83. # 获取文件名(不含路径)
  84. filename=$(basename "$file")
  85. # 检查是否为重要文件
  86. if is_important_file "$filename"; then
  87. echo_warn " 保留重要文件: $file"
  88. else
  89. files_to_delete+=("$file")
  90. echo_info " 标记删除: $file"
  91. ((total_files++))
  92. fi
  93. done < <(find "." -maxdepth 1 -name "$pattern" 2>/dev/null)
  94. done
  95. # 显示统计信息
  96. echo ""
  97. echo_info "总共标记了 $total_files 个文件进行删除"
  98. # 确认是否继续
  99. if [ $total_files -gt 0 ]; then
  100. echo ""
  101. echo_warn "注意: 此操作将永久删除这些文件,无法恢复!"
  102. echo -n "是否继续删除?(y/N): "
  103. read -r confirm
  104. if [[ "$confirm" == [Yy]* ]]; then
  105. echo ""
  106. echo_info "开始删除文件..."
  107. # 删除所有标记的文件
  108. for file in "${files_to_delete[@]}"; do
  109. if rm -f "$file"; then
  110. echo_info " 删除成功: $file"
  111. else
  112. echo_error " 删除失败: $file"
  113. fi
  114. done
  115. echo ""
  116. echo_success "清理完成!已删除 $total_files 个非必要文件"
  117. else
  118. echo ""
  119. echo_info "已取消清理操作"
  120. fi
  121. else
  122. echo ""
  123. echo_info "没有找到需要删除的文件"
  124. fi
  125. # 显示当前目录中的脚本文件
  126. echo ""
  127. echo_info "当前目录中剩余的脚本文件:"
  128. ls -la *.sh 2>/dev/null || echo " 没有找到shell脚本文件"
  129. # 显示当前目录中的Python文件
  130. echo ""
  131. echo_info "当前目录中剩余的Python文件:"
  132. ls -la *.py 2>/dev/null || echo " 没有找到Python文件"
  133. echo ""
  134. echo_success "清理脚本执行完毕!"