ddupe
ddupe is a fast, safe, cross-platform command-line tool for finding and removing duplicate files.
Duplicates are detected by hashing file contents using SHA-256, so files are matched by content, not name or location.
Useful for cleaning up:
- Photo collections
- Download folders
- Backups / archives
- Source trees
- Any directory full of near-identical files
ddupe works recursively and will scan an entire directory tree.
📘 Summary
| Item | Details |
|---|---|
| Name | ddupe |
| Description | Fast, safe, cross-platform duplicate-file detector & cleaner |
| Languages | Rust (CLI, async-ready, cross-platform) |
| Supported OS | Linux · macOS · Windows |
| Duplicate Method | SHA-256 content hashing (filename/location independent) |
| Key Features | Recursive scan · Colourised output · Progress bar · Dry-run mode |
| Safety | Interactive confirmation step before deletion |
| Binary Releases | Available for Linux/macOS/Windows (built via GitHub Actions) |
| License | MIT |
| CI | rustfmt · clippy (warnings = errors) · unit + integration tests |
🚀 Capabilities at a Glance
- 🔎 Deep recursive scanning of entire directory trees
- 🧠 Content-based detection using SHA-256 hashes
- 🎨 Readable output with colours and group markers
- 📊 Progress bars for large scans
- 🧪 Dry-run mode for safe previews
- 🗑️ Optional deletion with clear KEEP/DUPE status
- 💾 Total space estimate before removing anything
- 🧰 Pure Rust library + thin CLI wrapper
- 🌍 Cross-platform binaries via GitHub Actions
❓ Why ddupe?
Most duplicate cleaners rely on filenames, heuristics, or metadata.
ddupe instead:
- hashes the actual file content
- groups truly identical files regardless of name or location
- avoids false matches or “smart guessing”
- works the same on Linux, macOS, and Windows
- is scriptable, testable, and written with safe Rust practices
✨ Features
- 🔍 Fast recursive scanning
- 🧠 Content-based deduplication (SHA-256)
- 🎨 Colourised output for clarity
- 📊 Progress bar while hashing
- 🧮 Reports how much disk space can be freed
- 👟 Interactive mode (
-i) to accept/reject each duplicate - 🔒 Safe by default – always asks before deleting
- 🧪 Dry-run mode (
--dry-run) to preview deletions - 💥 Optional Windows/Linux/macOS binaries (cross-compiled)
📦 Installation
🔧 Build from source (recommended)