Metadata Organizer

RustTokioCLIEXIFSerdeClap

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 ..