# macgarbage **Repository Path**: csn1024/macgarbage ## Basic Information - **Project Name**: macgarbage - **Description**: 垃圾清理工具,速度极快! - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main-clean - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-21 - **Last Updated**: 2026-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # macgarbage Mac 目录大小扫描工具,快速分析目录占用空间。 ## 功能特性 - 快速扫描目录并显示大小 - 支持按大小、名称排序 - 支持按目录层级过滤(`--dir-level`) - 支持仅显示目录(`--dirs-only`) - 支持最小大小过滤(`--min-size`) - 支持 JSON 输出 - 支持深度限制 - **支持按扩展名删除文件(`--delete`)** - **支持按文件名匹配删除(`--name`)** - 并发扫描,性能优异 ## 安装 ### macOS / Linux ```bash go build -o macgarbage ./cmd/macgarbage ``` ### Windows ```bash go build -o macgarbage.exe ./cmd/macgarbage ``` ## 使用方法 ```bash macgarbage [选项] [路径] ``` ### 选项 | 选项 | 说明 | |------|------| | `-d, --depth N` | 最大显示深度(-1 表示无限制) | | `--sort name` | 按名称排序(默认按大小) | | `--order asc` | 升序排列(默认降序) | | `-m, --min-size N` | 最小大小过滤(如 100KB、1MB、1GB) | | `--dirs-only` | 仅显示目录,不显示文件 | | `--dir-level N` | 仅显示 N 层目录(1=直接子目录) | | `--delete ` | 按扩展名删除文件(如 "tmp,log,bak") | | `--name ` | 按文件名包含匹配删除(如 "test,backup") | | `--delete-dirs` | 配合 --name 删除匹配的目录 | | `--suffix ` | 按文件后缀删除(如 "apk.1,tmp.2",匹配文件名末尾) | | `--dry-run` | 预览模式,只显示不删除 | | `--confirm` | 删除前询问确认 | | `--json` | JSON 格式输出 | | `-h, --help` | 显示帮助 | | `-v, --version` | 显示版本 | ### 示例 #### macOS / Linux ```bash # 扫描当前目录 macgarbage . # 扫描指定目录 macgarbage ~/Documents # 限制显示深度 macgarbage /usr/local -d 2 # 仅显示大于 1MB 的项 macgarbage . --min-size 1MB # 按名称排序 macgarbage . --sort name # 仅显示直接子目录(不显示文件) macgarbage . --dir-level 1 # 仅显示两级目录 macgarbage . --dir-level 2 # 仅显示目录(不含文件) macgarbage . --dirs-only # JSON 输出 macgarbage . --json # 删除所有 .tmp 文件(预览) macgarbage --delete tmp --dry-run . # 删除所有 .tmp 和 .log 文件(确认后删除) macgarbage --delete tmp,log --confirm . # 按文件名包含匹配删除(预览) macgarbage --name test --dry-run . # 按文件名包含匹配删除(包含目录) macgarbage . --name test --delete-dirs --confirm # 按后缀删除(如删除所有 .apk.1 后缀的文件) macgarbage --suffix apk.1 --dry-run . ``` #### Windows (PowerShell / CMD) ```powershell # 扫描当前目录 .\macgarbage.exe . # 扫描指定目录 .\macgarbage.exe C:\Users\YourName\Documents # 限制显示深度 .\macgarbage.exe C:\ProgramFiles -d 2 # 仅显示大于 1MB 的项 .\macgarbage.exe . --min-size 1MB # 按名称排序 .\macgarbage.exe . --sort name # 仅显示直接子目录(不显示文件) .\macgarbage.exe . --dir-level 1 # 仅显示两级目录 .\macgarbage.exe . --dir-level 2 # 仅显示目录(不含文件) .\macgarbage.exe . --dirs-only # JSON 输出 .\macgarbage.exe . --json # 删除所有 .tmp 文件(预览) .\macgarbage.exe --delete tmp --dry-run . # 删除所有 .tmp 和 .log 文件(确认后删除) .\macgarbage.exe --delete tmp,log --confirm . # 按文件名包含匹配删除(预览) .\macgarbage.exe --name test --dry-run . # 按文件名包含匹配删除(包含目录) .\macgarbage.exe . --name test --delete-dirs --confirm # 按后缀删除(如删除所有 .apk.1 后缀的文件) .\macgarbage.exe --suffix apk.1 --dry-run . ``` ## 运行测试 ```bash go test ./... -v ``` ## 项目结构 ``` macgarbage/ ├── cmd/ │ └── macgarbage/ │ ├── main.go # CLI 入口 │ └── main_test.go # CLI 测试 ├── internal/ │ ├── common/ │ │ └── types.go # 公共类型定义 │ ├── deleter/ │ │ └── deleter.go # 文件删除模块 │ ├── output/ │ │ └── output.go # 输出渲染 │ └── scanner/ │ ├── scanner.go # 目录扫描器 │ ├── scanner_test.go │ └── testdata/ # 测试数据 └── README.md ```