Skip to main content

PyPI version Downloads License GitHub stars CI pre-commit.ci status

renux

A terminal-based bulk file renamer with a TUI

Preview

About

renux is a tool with a text-based (terminal) user interface (TUI) that automates file renaming. It simplifies this task with features like regex, placeholders, and text transformations, making it ideal for situations such as renaming photos, cleaning up download folders, or enforcing consistent naming conventions.

Features

  • Regex: perform advanced renaming with pattern matching, capturing groups, and replacements.
  • Text transformations: apply text transformations like slugify, camelCase to snake_case, and more.
  • Counter placeholders: add incremental counters (e.g., file1.txt, file2.txt) with customizable starting points, increments, and padding.
  • Date placeholders: include file creation/modification dates or the current date in filenames with customizable formats.
  • Backup and undo/redo: save and restore changes to your files.
  • File exclusion: exclude files from renaming.
  • Keyboard shortcuts: use hotkeys to quickly apply actions and navigate the UI.

Installation

Using pipx (recommended).

pipx install renux

Alternatively, you can use pip.

Usage

renux [directory] [pattern] [replacement]

Arguments

  • directory: Directory where files are located (default is the current directory or .).
  • pattern: Search pattern, which can be a regular expression (default is '').
  • replacement: Replacement string for the pattern (default is '').

Options

  • -c COUNT, --count COUNT: Max replacements per file (default is 0, meaning unlimited).
  • -r, --regex: Treats the pattern as a regular expression (default is True).
  • --case-sensitive: Makes the search case-sensitive (default is False).
  • --apply-to: Specifies where the renaming should be applied. Options are:
    • name: Rename the file's base name (default).
    • ext: Rename the file's extension.
    • both: Rename both the name and extension.

Markup

  • Text transformations: {string|operation}

    • slugify: Convert into a URL/filename-friendly format (e.g., "hello world" → "hello-world")
    • lower: Convert to lowercase
    • upper: Convert to uppercase
    • caps: Capitalize the first letter
    • title: Capitalize each word
    • camel: Convert to camel case (e.g., "hello world" → "helloWorld")
    • pascal: Convert to pascal case (e.g., "hello world" → "HelloWorld")
    • snake: Convert to snake case (e.g., "hello world" → "hello_world")
    • kebab: Convert to kebab case (e.g., "hello world" → "hello-world")
    • swapcase: Swap the case (e.g., "Hello World" → "hELLO wORLD")
    • reverse: Reverse the string (e.g., "Hello World" → "dlroW olleH")
    • strip: Remove leading and trailing whitespace
    • len: Get the length of the string
  • Counter: {counter(start=1,step=1,padding=1)}, e.g., {counter(1,2,3)} will generate a sequence like 001, 003, 005, ...

  • Dates: {now|created_at|modified_at(<format>)}, e.g., {now(%Y)} will replace it with the current year

Run renux --help for more details.

Examples

  • Rename files starting with "IMG" to "Image":
    renux my_photos/ IMG_ Image_
    
  • Rename all .txt files to .bak:
    renux my_directory/ .txt .bak --apply-to ext
    
  • Use regex to retain information from the old name:
    renux my_documents "document (\d).pdf" "doc (\1).pdf" -r
    
  • Append a counter to filenames:
    renux my_files/ file "file_{counter}"
    
  • Append creation year to filenames:
    renux my_files/ file "file_{created_at(%Y)}"
    
  • Apply transformations like slugify:
    renux my_files "(.*)" "{filename|slugify}" -r
    

Dev Setup

  1. Clone the repo
    git clone https://github.com/andrianllmm/renux.git
    cd renux
    
  2. Install dependencies with Poetry
    poetry install
    

Testing

Run tests with pytest:

poetry run python -m pytest

Contributing

Contributions are welcome! See CONTRIBUTING.md for more details.

License

Distributed under the MIT License.

Download files

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

Source Distribution

renux-0.1.3.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

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

renux-0.1.3-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file renux-0.1.3.tar.gz.

File metadata

  • Download URL: renux-0.1.3.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for renux-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0d40976c7a770fdb40b42c6e41093dd0ac7416c605a86f2a3609c8c915d7a3e1
MD5 dc2d7637b7973bd559b14901b78ef883
BLAKE2b-256 31b0a88fa22032c0ec614086dc3411026cee2cd51bf4d92074178a44e57c5098

See more details on using hashes here.

Provenance

The following attestation bundles were made for renux-0.1.3.tar.gz:

Publisher: release.yml on andrianllmm/renux

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

File details

Details for the file renux-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: renux-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for renux-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e7f4259d34d07be6da91dced3e02df8a47aae6236082f74fe3199da64dfd8e85
MD5 7a134cce191f974efa3ef2716e9e962c
BLAKE2b-256 420c743b492201746f5abd852f8351b3d49e518fa13c16c08e9668d219747a47

See more details on using hashes here.

Provenance

The following attestation bundles were made for renux-0.1.3-py3-none-any.whl:

Publisher: release.yml on andrianllmm/renux

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

Release history Release notifications | RSS feed

0.4.1

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

This release

0.1.3 This release

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page