Files
ai-agent-scaffold-go/configs/agent/skills/battle-plan/scripts/check_cleanable_files.sh
2026-05-30 23:16:49 +08:00

101 lines
4.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 "============================================================"