Storage Analyzer is a CLI tool for analyzing disk space usage on Linux systems and providing cleanup suggestions. It supports multiple Linux distributions and package managers.
storage_analyzer/
├── main.py # CLI entry point (Click + Rich)
├── scanner.py # Directory traversal and file discovery
├── analyzer.py # Size calculation and analysis
├── suggestions.py # Cleanup recommendations with distro-aware commands
└── utils.py # Helpers (size formatting, distro detection, device info)
- CLI commands using Click framework
- Rich console output (tables, panels, progress bars)
- Commands: scan, large-files, large-dirs, clean, suggest, disk, drives
scan_directory()- Recursive directory scanning with depth controlget_largest_files()- Find largest filesget_largest_directories()- Find largest directories by size
analyze_directory()- Comprehensive directory analysisget_path_disk_usage()- Get disk usage for a pathscan_directory_tree()- Tree-style directory scanning
get_user_cleanable_items()- User-specific caches (pip, npm, yarn, thumbnails)get_docker_items()- Docker cleanupget_package_cleanup_suggestions()- Package manager cleanup (distro-aware)get_system_cleanup_suggestions()- System cleanup (journal, kernels)
format_size()- Human-readable size formattingget_home_directory()- Get user home directoryget_all_devices()- List block devicesdetect_package_managers()- Detect available package managers- Device validation and disk usage utilities
The tool detects and provides cleanup commands for multiple package managers:
| Manager | Detection | Clean Command | Autoremove | Old Kernels |
|---|---|---|---|---|
| apt | which apt |
apt-get clean |
apt-get autoremove |
apt-get autoremove --purge |
| dnf | which dnf |
dnf clean all |
dnf autoremove |
dnf remove oldest-kernel |
| pacman | which pacman |
pacman -Scc |
pacman -Rsn $(pacman -Qtdq) |
(auto by pacman) |
| zypper | which zypper |
zypper clean |
zypper rm -u |
zypper rm -u kernel-* |
| apk | which apk |
apk clean |
apk del -r $(apk info -e) |
apk del linux-lts |
| flatpak | which flatpak |
flatpak remove --unused |
- | - |
| snap | which snap |
snap list --all |
- | - |
| docker | which docker |
docker image prune -a |
- | - |
Primary distro detection reads from /etc/os-release:
IDfield (e.g., ubuntu, fedora, arch, opensuse, alpine)ID_LIKEfield for derivatives (e.g., debian for ubuntu)
Package manager detection uses which <command> to find available managers.
- User caches: pip, npm, yarn, thumbnails, browser caches
- Package managers: apt, dnf, pacman, zypper, apk, flatpak, snap
- Containers: Docker images
- System logs: journalctl, rotated logs, crash reports
- Old kernels: Distro-specific removal commands
Tests are located in tests/:
test_scanner.py- Directory scanning teststest_analyzer.py- Analysis teststest_suggestions.py- Cleanup suggestion teststest_utils.py- Utility function teststest_main.py- CLI command tests
Run tests with: python3 -m pytest tests/ -v