--- description: Analyze disk usage, identify space hogs, and provide cleanup recommendations with optional execution (macOS only) allowed-tools: Bash(df:*), Bash(du:*), Bash(find:*), Bash(ls:*) --- # Disk Analysis and Cleanup Command **IMPORTANT**: This command is designed and tested for macOS only. It uses macOS-specific paths and utilities. Your task is to help the user analyze disk usage, identify large files and directories consuming space, provide categorized cleanup recommendations, and optionally execute approved cleanup operations. ## Context: Current Disk Status First, check the current disk usage: !`df -h` This shows the overall disk space availability on all mounted filesystems. ## Step 1: System Analysis Perform a comprehensive disk analysis: ### 1.1 Overall Disk Usage Parse the `df -h` output and identify: - The main disk (usually `/` or `/System/Volumes/Data` on macOS) - Total capacity - Used space - Available space - Percentage used Present this information clearly: ``` Disk Usage Summary ================== Main Disk: [name] Capacity: X.XX GB Used: X.XX GB (XX%) Available: X.XX GB ``` ### 1.2 Find Largest Directories Run these commands to identify space hogs: 1. **Top 10 largest directories in home folder**: ```bash du -h -d 1 ~ 2>/dev/null | sort -hr | head -10 ``` 2. **Large directories in common locations**: ```bash du -h -d 1 ~/Library 2>/dev/null | sort -hr | head -10 du -h -d 1 ~/Downloads 2>/dev/null | sort -hr | head -5 ``` Present the findings: ``` Largest Directories =================== Home Directory (~): 1. [directory] - X.XX GB 2. [directory] - X.XX GB ... Library (~Library): 1. [directory] - X.XX GB 2. [directory] - X.XX GB ... ``` ### 1.3 Identify Specific Cleanup Targets Check common space hogs: 1. **Old Downloads** (files older than 30 days): ```bash find ~/Downloads -type f -mtime +30 -exec ls -lh {} \; 2>/dev/null | head -20 ``` Count and calculate total size 2. **Application Caches**: ```bash du -sh ~/Library/Caches 2>/dev/null ``` 3. **System Logs**: ```bash du -sh ~/Library/Logs 2>/dev/null ``` 4. **Trash**: ```bash du -sh ~/.Trash 2>/dev/null ``` 5. **Temporary files**: ```bash du -sh /tmp 2>/dev/null ``` ## Step 2: Provide Cleanup Recommendations Based on the analysis, present categorized recommendations: ``` Cleanup Recommendations ======================= SAFE (Low Risk) --------------- These operations are generally safe and reversible: 1. Empty Trash (~/.Trash) Estimated space: X.XX GB Risk: Low - items can be restored before emptying 2. Old Downloads (files >30 days old) Estimated space: X.XX GB Risk: Low - review list before deletion 3. Clear temporary files (/tmp) Estimated space: X.XX MB Risk: Low - system recreates as needed MODERATE (Medium Risk) ---------------------- These require some review before deletion: 4. Application Caches (~/Library/Caches) Estimated space: X.XX GB Risk: Medium - apps will rebuild caches, may slow down temporarily 5. System Logs (~/Library/Logs) Estimated space: X.XX MB Risk: Medium - useful for troubleshooting recent issues CAREFUL (Higher Risk) --------------------- These require careful review and may affect functionality: 6. Large files in specific directories [List specific large files found] Risk: Varies - requires manual review ``` ## Step 3: Ask for User Confirmation Present cleanup options: ``` What would you like to do? 1. Review and clean specific items - I'll show you each category and you can approve individually 2. Quick clean (Safe items only) - Empty Trash - Clear temporary files - Estimated space freed: X.XX GB 3. Generate detailed report only - No cleanup, just save findings to a file 4. Cancel - Exit without making changes ``` **Ask the user**: "Which option would you like? (Enter 1, 2, 3, or 4)" Wait for the user's response. ## Step 4: Cleanup Phase (if approved) ### Option 1: Review and Clean Specific Items For each recommendation, ask the user: **For Trash:** ```bash ls -lh ~/.Trash | head -10 ``` Show first 10 items, then ask: "Empty trash (~/.Trash)? This will permanently delete X.XX GB. (y/n)" If yes: ```bash rm -rf ~/.Trash/* ``` **For Old Downloads:** ```bash find ~/Downloads -type f -mtime +30 -exec ls -lh {} \; ``` Show the list and ask: "Delete these files from Downloads? (y/n)" If yes: ```bash find ~/Downloads -type f -mtime +30 -delete ``` **For Application Caches:** Show size and ask: "Clear application caches (~/Library/Caches)? Apps will rebuild as needed. (y/n)" If yes: ```bash rm -rf ~/Library/Caches/* ``` **For System Logs:** Ask: "Clear system logs (~/Library/Logs)? (y/n)" If yes: ```bash rm -rf ~/Library/Logs/* ``` **For Temporary Files:** Ask: "Clear temporary files (/tmp)? (y/n)" If yes: ```bash sudo rm -rf /tmp/* ``` ### Option 2: Quick Clean (Safe Items Only) First, show the user what will be cleaned: ``` Quick Clean Summary =================== The following items will be deleted: 1. Trash (~/.Trash) - Size: X.XX GB 2. Temporary files (/tmp) - Size: X.XX MB Total Space to be Freed: X.XX GB ``` **Ask for final confirmation**: "Proceed with quick clean? This will permanently delete the items listed above. (y/n)" Wait for user response. **If user confirms (y):** Execute these commands in sequence: 1. **Empty Trash**: ```bash rm -rf ~/.Trash/* ``` Report: "✓ Emptied Trash" 2. **Clear temporary files**: ```bash sudo rm -rf /tmp/* ``` Report: "✓ Cleared temporary files" Report total space freed. **If user declines (n):** Respond: "Quick clean cancelled. No changes were made." ### Option 3: Generate Detailed Report Create a report file: ```bash cat > ~/disk-analysis-report.txt < General > Storage - Consider cloud storage for large media files - Regular maintenance prevents critical low-disk situations - Check for large files: `find ~ -type f -size +1G 2>/dev/null` ```