Plexisort is a command-line tool designed to organize your files based on metadata.

Overview

Plexisort

Plexisort is a command-line tool designed to organize your files based on metadata. It allows for flexible source and destination directory settings, supports dry-run operations for safe previews of potential changes, and even offers an undo functionality for reversing the last set of file movements.

Motivation

The Plexisort project began out of necessity and curiosity. Like many, I was grappling with a cluttered Downloads folder, consisting of files accumulated over time. This clutter made it difficult to locate important documents. I also had quite a lot of images and wanted ot organize them by date.

At about the same time, I started to learn Rust, and I was eager to put my new found power to the test. Plexisort emerged as the perfect project to address both my personal need for a cleaner digital workspace and my professional desire to become better at Rust.

In sharing Plexisort, I hope to not only provide a solution to a common problem but also inspire others to embark on their own learning journeys. Whether it's tackling digital clutter or learning a new programming language, the essence of Plexisort is about embracing challenges and turning them into opportunities for growth.

Version

0.1.0

Features

  • Custom Config File: Use a custom configuration (toml) file to specify operational parameters.
  • Source Directory: Set one or more source directories for the organization process.
  • Destination Directory: Define a specific destination directory for organized files.
  • Dry Run: Execute the tool in a mode that shows what would be done without making any changes.
  • Undo: Revert the last set of changes made by the tool.

How to Use

  1. Installation: Ensure you have Rust installed on your system. Clone this repository and build the project using cargo build --release.
  2. Running: Execute the tool with cargo run -- [OPTIONS]. The following options are available:
    • -c, --config : Sets a custom config file.
    • --source : Sets the source directory(s). Multiple directories can be specified.
    • --destination : Sets the destination directory.
    • --dry-run: Runs the organizer without making any changes.
    • --undo: Reverts the last set of file movements.

Building the Configuration

If not using a configuration file, the tool requires at least the source and destination directories to be specified through command-line options.

Config File Example

You can use a config.toml file like this for the configuration option:

source_directories = ["path/to/cluttered_data"]
destination = "organized_data/organized"

Example Command using the config.toml file

cargo run -- --config config.toml

Example Command using source and destination paths

cargo run -- --source /path/to/source --destination /path/to/destination

This will organize files from /path/to/source to /path/to/destination based on their metadata.

Visual Examples:

Dry run mode creates a preview of the organized folder without making any changes

cargo run -- --config config.toml --dry-run=true

Dry run mode

Folder Layout Before and After Running Plexisort

Folder Structure Comparison

Original folder structure Final folder structure after running Plexisort

Left: Original folder structure.

Right: Final folder structure after running Plexisort.

Detailed Folder View Comparison

Cluttered folder Organized folder after Plexisort

Left: Cluttered folder before Plexisort.

Right: Organized folder after running Plexisort.

Using the --undo=true flag reverses the entire operation to the orignal state

cargo run -- --config config.toml --undo=true

Logging

Plexisort provides informative logging during its operation, indicating the progress and actions taken or to be taken in dry-run mode.

Limitations

Plexisort moves uncategorized files into the Other_Files directory.

Contributions

Contributions are welcome! Please feel free to submit pull requests or create issues for bugs and feature requests.

License

This project is open-source and available under the MIT License.

You might also like...
RnR is a command-line tool to securely rename multiple files and directories that supports regular expressions
RnR is a command-line tool to securely rename multiple files and directories that supports regular expressions

RnR is a command-line tool to securely rename multiple files and directories that supports regular expressions. Features Batch rename files and direct

Anglosaxon is a command line tool to parse XML files using SAX
Anglosaxon is a command line tool to parse XML files using SAX

anglosaxon - Convert large XML files to other formats anglosaxon is a command line tool to parse XML files using SAX. You can do simple transformation

🍅 A command-line tool to get and set values in toml files while preserving comments and formatting

tomato Get, set, and delete values in TOML files while preserving comments and formatting. That's it. That's the feature set. I wrote tomato to satisf

Command line tool for editing .ini files

Edit-ini Command line tool for editing .ini files Usage Usage: edit-ini [OPTIONS] Options: -i, --input file Input file to read f

rsv is a command line tool to deal with small and big CSV, TXT, EXCEL files (especially 10G)

csv, excel toolkit written in Rust rsv is a command line tool to deal with small and big CSV, TXT, EXCEL files (especially 10G). rsv has following fe

Potr (Po Translator) is a command line tool for translating gettext PO files.

Potr Potr (Po Translator) is a command line tool for translating Gettext PO files. Currently, it supports translation using OpenAI, Azure OpenAI Servi

tpp (Tera Pre-Processor) is a versatile CLI (Command Line Interface) tool crafted for preprocessing files using the Tera templating engine.

tpp (Tera Pre-Processor) is a versatile CLI (Command Line Interface) tool crafted for preprocessing files using the Tera templating engine. Drawing inspiration from pre-processors like cpp and gpp, tpp is the next evolution with its powerful expressive toolset.

Pink is a command-line tool inspired by the Unix man command.

Pink is a command-line tool inspired by the Unix man command. It displays custom-formatted text pages in the terminal using a subset of HTML-like tags.

Save image from your clipboard 📋 as an image file directly from your command line! 🔥

Clpy 📋 Save copied image from clipboard as an image file directly from your command line! Note It works only on windows as of now. I'll be adding sup

Owner
Richard Chukwu
Richard Chukwu
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.

zigfi zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets

Aldrin Zigmund Cortez Velasco 18 Oct 24, 2022
A CLI app to set and organize your favorite DNS servers.

rdns A CLI app to set and organize your favorite DNS servers. Introduction rdns is a CLI utility that can set your system DNS, either directly or by m

null 4 Feb 19, 2024
A server software designed for fetching Minecraft and Minecraft-related metadata

Minecraft Metadata Server A server software designed for fetching Minecraft and Minecraft-related metadata (such as Forge, Fabric, Quilt and Liteloade

Prism Launcher 11 Jan 19, 2023
A command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects.

CCake CCake is a command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects. Goals To be easily und

Boston Vanseghi 4 Oct 24, 2022
Small command-line tool to switch monitor inputs from command line

swmon Small command-line tool to switch monitor inputs from command line Installation git clone https://github.com/cr1901/swmon cargo install --path .

William D. Jones 5 Aug 20, 2022
Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're working with files or directories, this tool simplifies common file operations with ease.

Rust FileOps Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're w

Harikesh Ranjan Sinha 5 May 2, 2024
KAIVM is a multiplatform Command Line Interface (CLI) designed to simplify the process of downloading, managing, configuring, and running different versions of Shinkai Node

KAIVM - Shinkai Version Manager KAIVM is a multiplatform Command Line Interface (CLI) designed to simplify the process of downloading, managing, confi

Alfredo Gallardo 7 May 1, 2024
Command line tool to extract various data from Blender .blend files

blendtool Command line tool to extract various data from Blender .blend files. Currently supports dumping Eevee irradiance volumes to .dds, new featur

null 2 Sep 26, 2021
apkeep - A command-line tool for downloading APK files from various sources

apkeep - A command-line tool for downloading APK files from various sources Installation Precompiled binaries for apkeep on various platforms can be d

Electronic Frontier Foundation 561 Dec 29, 2022