Skip to main content

A CLI organizer you didn’t know you needed — yet.

Project description

Filecraft

A CLI organizer you didn’t know you needed — yet.

This is the Python implementation of Filecraft, focused on safe and repeatable file organization workflows.

Requirements

  • Python >=3.10,<3.15

Distribution

  • Package target: PyPI (filecraft-cli)
  • CLI command: filecraft
  • Standalone binary: Filecraft (PyInstaller)

Install / Run

Option 1: Local development (Poetry)

poetry install
poetry run filecraft --help

Option 2: PyPI install (release users)

pip install filecraft-cli
filecraft --help

Option 2: Run module directly (without installing script)

PYTHONPATH=src python -m file_organiser_python.main --help

Commands

  • filecraft rename
  • filecraft separate
  • filecraft merge
  • filecraft revert

All commands support --dry-run to preview actions without moving files. Working directory flags are validated before any --target-dir creation prompt.

rename

Renames files in working_dir and moves them to target_dir. By default names are numeric (1.ext, 2.ext, ...); with --rename-with they become prefixed (name_1.ext, name_2.ext, ...).

Options

  • --working-dir PATH (default: current directory)
  • --target-dir PATH (default: current directory)
  • --dry-run
  • --history (save history file for revert)
  • --rename-with TEXT (optional base name prefix, e.g. invoice)

If --target-dir is provided and does not exist, the CLI prompts to create it (y/n). Declining exits with a --target-dir error.

Rename Example

filecraft rename --working-dir ./downloads --target-dir ./renamed --history
filecraft rename --working-dir ./downloads --target-dir ./renamed --rename-with invoice

separate

Separates files according to mode.

Separate Modes

  • extension: Move files of a specific extension (e.g. .pdf) into TARGET/PDF
  • date: Move files modified on a specific date (or today) into TARGET/YYYY-MM-DD
  • extension_and_date: Combine both filters into TARGET/YYYY-MM-DD/EXT
  • file: Sort all files by file type category (IMAGES, VIDEOS, DOCUMENTS, ARCHIVES, etc.)

Separate Options

  • --mode [extension|date|extension_and_date|file] (default: extension)
  • --extension TEXT (required for extension and extension_and_date)
  • --file-type TEXT (optional for file; accepts category like documents or extension like pdf)
  • --date YYYY-MM-DD (used by date and extension_and_date; validated)
  • --working-dir PATH (default: current directory)
  • --target-dir PATH (default: current directory)
  • --dry-run
  • --history

Separate Examples

filecraft separate --mode extension --extension pdf --working-dir ./in --target-dir ./out
filecraft separate --mode date --date 2026-03-01 --working-dir ./in --target-dir ./out
filecraft separate --mode extension_and_date --extension .jpg --date 2026-03-01 --working-dir ./in --target-dir ./out
filecraft separate --mode file --working-dir ./in --target-dir ./out
filecraft separate --mode file --file-type pdf --working-dir ./in --target-dir ./out

revert

Reverts moves using a history file.

Revert Options

  • --directory PATH (searches latest history in that directory; default: current directory)
  • --history-file PATH (use a specific history file)
  • --dry-run
  • --keep-history (do not delete history file after successful revert)

Revert Examples

filecraft revert --directory ./out
filecraft revert --history-file ./out/.organizer_history_2026-03-01_12-00-00-123456.json

merge

Merges files from multiple working_dir locations into a single target_dir.

Merge Modes

  • extension: Merge files of a specific extension into TARGET/EXT
  • date: Merge files modified on a specific date (or today) into TARGET/YYYY-MM-DD
  • extension_and_date: Combine both filters into TARGET/YYYY-MM-DD/EXT
  • file: Merge all files by file type category (IMAGES, VIDEOS, DOCUMENTS, ARCHIVES, etc.)

Merge Options

  • --mode [extension|date|extension_and_date|file] (default: extension)
  • --extension TEXT (required for extension and extension_and_date)
  • --date YYYY-MM-DD (used by date and extension_and_date; validated)
  • --working-dir PATH (required, repeat for multiple source directories)
  • --target-dir PATH (default: current directory)
  • --dry-run
  • --history

Merge Examples

filecraft merge --mode extension --extension pdf --working-dir ./downloads --working-dir ./desktop --target-dir ./merged
filecraft merge --mode date --date 2026-03-01 --working-dir ./in1 --working-dir ./in2 --target-dir ./merged
filecraft merge --mode extension_and_date --extension .jpg --date 2026-03-01 --working-dir ./camera --working-dir ./phone --target-dir ./merged
filecraft merge --mode file --working-dir ./in1 --working-dir ./in2 --target-dir ./merged

Notes

  • History files are saved with a timestamped name like .organizer_history_YYYY-MM-DD_HH-MM-SS-ffffff.json.
  • File collisions are handled safely by appending suffixes like _1, _2, etc.
  • Compound extensions such as .tar.gz are recognized when sorting by file type.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

filecraft_cli-1.0.1.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

filecraft_cli-1.0.1-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file filecraft_cli-1.0.1.tar.gz.

File metadata

  • Download URL: filecraft_cli-1.0.1.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for filecraft_cli-1.0.1.tar.gz
Algorithm Hash digest
SHA256 dac2f8b93345011e1d5a6fa8be1ca15b32a67f09437a28a1d5fed29fd68cd443
MD5 1cf7af797d122162aec3ec6d0abd21a3
BLAKE2b-256 9efad5c60652d81f134720423f6dddc17cf96f91a18f29c6013b505d945c3b77

See more details on using hashes here.

Provenance

The following attestation bundles were made for filecraft_cli-1.0.1.tar.gz:

Publisher: release.yml on murtazapatel89100/Filecraft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file filecraft_cli-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: filecraft_cli-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for filecraft_cli-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e57f42bb7bce8d26f3532e7e0090df76e4c370eafce5da7bd8a8d7e86347bc8c
MD5 01d44c7c67255f8bceee2c78f3bf43a1
BLAKE2b-256 f62dbbcdf1be8553a087692ef5a3dd8d80fa17ef8333f45f0b0e0dc9a1d8158f

See more details on using hashes here.

Provenance

The following attestation bundles were made for filecraft_cli-1.0.1-py3-none-any.whl:

Publisher: release.yml on murtazapatel89100/Filecraft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page