#!/bin/bash # 项目文件清理脚本 - 删除非必要的临时脚本文件 set -e echo "=============================================" echo " 项目文件清理脚本 " echo "=============================================" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo_info() { echo -e "${GREEN}[信息]${NC} $1" } echo_warn() { echo -e "${YELLOW}[警告]${NC} $1" } echo_error() { echo -e "${RED}[错误]${NC} $1" } echo_success() { echo -e "${GREEN}[成功]${NC} $1" } # 需要保留的重要脚本文件 IMPORTANT_FILES=( "deploy.sh" # 统一部署脚本 "install_arm_ubuntu.sh" # 安装脚本(根据README_INSTALL.md) "cleanup_scripts.sh" # 当前清理脚本自身 ) # 额外删除的特定文件 EXTRA_FILES_TO_DELETE=( "deploy_to_remote.sh" "install_dependency_and_restart.sh" "create_fix_script.py" "fix_duplicate_app.py" "fix_socketio.py" ) # 函数:检查文件是否为重要文件 is_important_file() { local filename="$1" for important_file in "${IMPORTANT_FILES[@]}"; do if [[ "$filename" == "$important_file" ]]; then return 0 # 是重要文件 fi done return 1 # 不是重要文件 } # 要删除的脚本模式列表 SCRIPT_PATTERNS=( "fix_*.sh" "test_*.sh" "test_*.py" "check_*.sh" "upload_*.sh" "restart_*.sh" "simple_*.sh" "direct_*.sh" "multiline_*.sh" "verify_*.sh" "force_*.sh" "kill_*.sh" "correct_*.sh" "final_*.sh" "create_*.sh" "remote_*.py" ) # 统计要删除的文件数量 declare -i total_files=0 # 收集所有要删除的文件 declare -a files_to_delete # 添加额外指定的文件 for file in "${EXTRA_FILES_TO_DELETE[@]}"; do if [[ -f "$file" ]]; then files_to_delete+=("$file") echo_info " 标记删除(额外): $file" ((total_files++)) fi done for pattern in "${SCRIPT_PATTERNS[@]}"; do echo_info "查找匹配模式: $pattern" # 查找匹配的文件,但排除重要文件 while IFS= read -r file; do # 获取文件名(不含路径) filename=$(basename "$file") # 检查是否为重要文件 if is_important_file "$filename"; then echo_warn " 保留重要文件: $file" else files_to_delete+=("$file") echo_info " 标记删除: $file" ((total_files++)) fi done < <(find "." -maxdepth 1 -name "$pattern" 2>/dev/null) done # 显示统计信息 echo "" echo_info "总共标记了 $total_files 个文件进行删除" # 确认是否继续 if [ $total_files -gt 0 ]; then echo "" echo_warn "注意: 此操作将永久删除这些文件,无法恢复!" echo -n "是否继续删除?(y/N): " read -r confirm if [[ "$confirm" == [Yy]* ]]; then echo "" echo_info "开始删除文件..." # 删除所有标记的文件 for file in "${files_to_delete[@]}"; do if rm -f "$file"; then echo_info " 删除成功: $file" else echo_error " 删除失败: $file" fi done echo "" echo_success "清理完成!已删除 $total_files 个非必要文件" else echo "" echo_info "已取消清理操作" fi else echo "" echo_info "没有找到需要删除的文件" fi # 显示当前目录中的脚本文件 echo "" echo_info "当前目录中剩余的脚本文件:" ls -la *.sh 2>/dev/null || echo " 没有找到shell脚本文件" # 显示当前目录中的Python文件 echo "" echo_info "当前目录中剩余的Python文件:" ls -la *.py 2>/dev/null || echo " 没有找到Python文件" echo "" echo_success "清理脚本执行完毕!"