| Crates.io | ddupe |
| lib.rs | ddupe |
| version | 1.1.0 |
| created_at | 2025-12-02 21:52:53.4777+00 |
| updated_at | 2025-12-08 11:54:48.440934+00 |
| description | Fast, cross-platform CLI for finding and removing duplicate files by content hash. |
| homepage | https://github.com/Morrolan/ddupe |
| repository | https://github.com/Morrolan/ddupe |
| max_upload_size | |
| id | 1962748 |
| size | 74,134 |
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:
ddupe works recursively and will scan an entire directory tree.
| 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 | LGPL-3.0-or-later |
| CI | rustfmt · clippy (warnings = errors) · unit + integration tests |
Most duplicate cleaners rely on filenames, heuristics, or metadata.
ddupe instead:
-i) to accept/reject each duplicate (or keep all)--dry-run) to preview deletions--json-output <file>) that never deletes or promptsgit clone https://github.com/yourname/ddupe.git
cd ddupe
cargo build --release
# binary will be at target/release/ddupe
Export a structured report without deleting or prompting:
ddupe --json-output /path/to/report.json /path/to/scan
This behaves like a dry run: it never deletes files, produces no terminal output, and writes the analysis to the specified JSON file. In the JSON report, all files in a duplicate group are listed (no preselected “keep”). It skips the KEEP/DUPE listing but still shows the header and progress.
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo test