A fast, flexible file sorter and organizer
Project description
📁 File swirl
Now Organizes files from chaos to order with just one command. Organize photos, videos, documents, and more — cleanly and efficiently — using flexible sorting rules.
✨ Organize Features
- 📅 Sort by Date — Organize files into folders by creation or modified date.
- 🧩 Filter by File Extension — Group files like .jpg, .mp4, .pdf, etc
- 🏷️ Sort by Camera Make (EXIF.make) — Useful for photographers to group by device brand.
- 🔍 Sort by File Type (MIME) — Organize images, videos, documents, etc.
- 🗂️ Nested Sorting — Apply multi-level sort: e.g., Date → Extension → Make.
- ⚙️ Custom Sort Key Chains — Chain any supported keys in any order.
- 🎛️ Parallel Processing Support — Fast sorting using multi-threading.
Also supports to arranges file in nested folder structure like Output/Data/Make/Model for all the options mentioned above.
This scripts lets you filter out specific file extensions while sorting.
e.g Sort only .mp4 files from source dir into destination dir
System requriments.
Python3.10+ExifTool
✅ Supports
- Windows 11 x64
Project setup
- git clone https://github.com/NishantGhanate/FileSwirl.git
- cd FileSort
- python -m venv venv
- [Win] > venv\Scripts\activate
- [Linux] $ venv/bin/activate
- pip install -r requriments.txt
Download this tool
- Download & Install: https://exiftool.org/
- For Windows Installer: https://oliverbetz.de/pages/Artikel/ExifTool-for-Windows
To install project locally
For development
> pip install -e .
For final build testing
> python -m pip install .
To build project locally
> python -m build
> pip install dist/file_swirl-0.0.10-py3-none-any.whl
HELP
> python -m file_swirl.cli -h
Run cli: default command
> python -m file_swirl.cli --input_paths "E:\\src" --output_path "E:\\dest"
Defaults Args for cli
--shift_type copy
--nested_order date
--process_type linear
--file_extensions "{pre-defined inside constants}"
Args and its values
--shift_type : copy | move
--nested_order : alphabet date file_extension file_extension_group make model
--process_type : linear | parallel
--file_extensions "{pre-defined inside constants all basic formats}"
Examples:
🔁 Move files from a source to a destination
python -m file_swirl.cli \
--input_paths "E:\\src" \
--output_path "E:\\dest" \
--shift_type "move"
🗃️ Move files and organize by nested folders: date file_extension
python -m file_swirl.cli \
--input_paths "E:\\src" \
--output_path "E:\\dest" \
--shift_type "move" \
--nested_order date file_extension
🏷️ Organize files by camera make/brand
python -m file_swirl.cli \
--input_paths "E:\\src" \
--output_path "E:\\dest" \
--nested_order make
⚡ Copy from multiple folders in parallel mode
python -m file_swirl.cli \
--input_paths "E:\\src" "E:\\temp" \
--output_path "E:\\dest" \
--shift_type "copy" \
--process_type "parallel
🧱 Architecture:
Currently its limited to 1 producer and 4 q each thread will consume from this q
+-----------------+ +------------------+
| Producer(s) | ---> | Queue (Stream) | ---> [Processor 1]
| (dir scanners) | | file paths | ---> [Processor 2]
+-----------------+ +------------------+ ---> [Processor N]
Set to test code locally
Linux : export PYTHONPATH=.
WIN: set PYTHONPATH=.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file file_swirl-0.0.10.tar.gz.
File metadata
- Download URL: file_swirl-0.0.10.tar.gz
- Upload date:
- Size: 16.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a7ed29c65cc7a11cee58f6acc3806c4fc5371ee135d0280643f4c9055ea02b4
|
|
| MD5 |
979ce2c2b3fb483bda64b64ecfd62d13
|
|
| BLAKE2b-256 |
01716300a4574e44fad7094bffbb82b9a14d1a5cde96a374304a8b849bcdda66
|
File details
Details for the file file_swirl-0.0.10-py3-none-any.whl.
File metadata
- Download URL: file_swirl-0.0.10-py3-none-any.whl
- Upload date:
- Size: 18.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0947f57b4c7fe88162c86e3b96e323f02225f8ef9a1838a76b2d9fdc04a6763
|
|
| MD5 |
4459bac241bf791062bf14efdeb81044
|
|
| BLAKE2b-256 |
d142820862fe15c343832bd40fcff556d77bcfb83ca6266d65f5318a21485c9c
|