Files
ai-agent-scaffold-go/configs/agent/skills/battle-plan/scripts/check_cleanable_files.sh

101 lines
4.6 KiB
Bash
Raw Normal View History

2026-05-30 23:16:49 +08:00
#!/bin/bash
# check_cleanable_files.sh
# 脚本功能:列举 macOS 系统中常见的垃圾文件和可清理内容,并显示占用空间大小。
# 注意:此脚本仅进行扫描和列举,不会删除任何文件。
echo "============================================================"
echo " macOS 系统可清理垃圾文件扫描 "
echo "============================================================"
echo "正在扫描,请稍候..."
echo ""
# 定义颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 函数:检查并打印目录大小
check_dir_size() {
local name="$1"
local path="$2"
local desc="$3"
if [ -d "$path" ]; then
# 使用 du -sh 计算大小,并提取数值
# 2>/dev/null 屏蔽权限错误
size=$(du -sh "$path" 2>/dev/null | cut -f1)
# 如果目录为空或无法读取大小,可能显示为 0B 或空
if [ -n "$size" ]; then
echo -e "${YELLOW}[$name]${NC}"
echo -e " 路径: $path"
echo -e " 大小: ${RED}$size${NC}"
echo -e " 说明: $desc"
echo "------------------------------------------------------------"
fi
fi
}
# 1. 用户缓存
check_dir_size "用户缓存" "$HOME/Library/Caches" "应用程序产生的临时文件,通常可以安全清理(可能会导致应用重新加载数据变慢)。"
# 2. 系统日志
check_dir_size "用户日志" "$HOME/Library/Logs" "应用程序的日志文件,如果不需要排查问题,通常可以清理。"
check_dir_size "系统日志" "/private/var/log" "系统运行日志,通常由系统自动管理,但积压过多时可清理旧日志。"
# 3. 废纸篓
check_dir_size "废纸篓" "$HOME/.Trash" "已删除但未清空的文件。"
# 4. Xcode 开发垃圾 (如果存在)
check_dir_size "Xcode DerivedData" "$HOME/Library/Developer/Xcode/DerivedData" "Xcode 编译产生的中间文件和索引,删除后下次编译会重新生成(可解决很多 Xcode 报错问题)。"
check_dir_size "Xcode iOS DeviceSupport" "$HOME/Library/Developer/Xcode/iOS DeviceSupport" "连接过的旧 iOS 设备支持文件,如果不再调试旧版本 iOS可以清理。"
check_dir_size "Xcode Archives" "$HOME/Library/Developer/Xcode/Archives" "打包发布的 App 归档,如果确认不再需要旧版本的包,可以清理。"
# 5. 浏览器缓存 (部分示例)
check_dir_size "Chrome 缓存" "$HOME/Library/Caches/Google/Chrome" "Chrome 浏览器的缓存文件。"
# Firefox
check_dir_size "Firefox 缓存" "$HOME/Library/Caches/Firefox" "Firefox 浏览器的缓存文件。"
# 6. 包管理器缓存
# Homebrew
if command -v brew &> /dev/null; then
brew_cache=$(brew --cache)
check_dir_size "Homebrew 缓存" "$brew_cache" "Homebrew 下载的安装包缓存,可通过 'brew cleanup' 清理。"
fi
# 7. 语言环境缓存/依赖
check_dir_size "Yarn 缓存" "$HOME/Library/Caches/Yarn" "Yarn 包管理器缓存。"
check_dir_size "npm 缓存" "$HOME/.npm" "npm 包管理器缓存。"
check_dir_size "Maven 缓存" "$HOME/.m2/repository" "Maven 仓库,虽然不是垃圾,但如果很久不用,可能占用大量空间。"
check_dir_size "Gradle 缓存" "$HOME/.gradle/caches" "Gradle 构建缓存。"
check_dir_size "CocoaPods 缓存" "$HOME/Library/Caches/CocoaPods" "CocoaPods 依赖缓存。"
# 8. Docker (如果运行)
if command -v docker &> /dev/null; then
echo -e "${YELLOW}[Docker 未使用资源]${NC}"
echo -e " 说明: 停止的容器、未使用的镜像和网络。"
echo -e " 建议执行命令: ${GREEN}docker system df${NC} 查看详情"
# docker system df 可能需要 docker 正在运行
if docker info &> /dev/null; then
docker system df
else
echo " (Docker 服务未运行,无法获取大小)"
fi
echo "------------------------------------------------------------"
fi
# 9. 下载文件夹 (提醒)
check_dir_size "下载文件夹" "$HOME/Downloads" "下载的文件,通常包含很多不再需要的安装包和临时文件。"
echo ""
echo "============================================================"
echo "建议清理方式:"
echo "1. 使用 'rm -rf <路径>' 删除特定目录内容(请务必小心确认路径)。"
echo "2. 对于 Homebrew使用 'brew cleanup'。"
echo "3. 对于 Docker使用 'docker system prune'。"
echo "4. 对于 Xcode可以直接删除 DerivedData 目录。"
echo "5. 推荐使用专门的清理工具(如 CleanMyMac 或腾讯柠檬清理)进行更安全的清理。"
echo "============================================================"