Metadata Organizer
Metadata Organizer
A high-performance Rust CLI tool to scan directories, extract, and organize file metadata with concurrent processing, EXIF support, and flexible sorting options.
Overview
Metadata Organizer walks large directory trees and pulls rich metadata out of every file, then sorts and exports it in a structured, machine-readable form. It leans on async Rust to stay fast even on directories with tens of thousands of files, achieving a 10–50x speedup over a naive sequential scan.
Key Features
Comprehensive Metadata Extraction
- File name, size, type, and MIME type
- Creation, modification, and access timestamps
- File permissions
- EXIF data for images (camera info, GPS, dimensions, and more)
High Performance
- Concurrent file processing on the Tokio async runtime
- Controlled parallelism via a semaphore (50 concurrent operations)
- Real-time progress bar
- Tuned for large directory structures
Flexible Options
- Recursive or single-level scanning
- Multiple sort criteria (name, size, type, date)
- Structured JSON export
- Cross-platform support (Windows, macOS, Linux)
Tech Stack
- Language: Rust
- Async runtime: Tokio, with a semaphore to cap concurrency at 50 operations
- CLI: Clap for argument parsing
- Serialization: Serde for structured JSON export
- Time: Chrono for timestamp handling
Architecture
The crate is split into focused modules — cli, error, metadata, scanner, and sorter — keeping argument parsing, extraction, traversal, and ordering cleanly separated and independently testable.
Usage
metadata-organizer [OPTIONS] <PATH>
Build from source with cargo build --release, or install globally with cargo install --path ..