renux
A terminal-based bulk file renamer with a TUI
What is it?
What it is
A terminal-based bulk file renamer with a TUI
Why it exists
To simplify file renaming tasks through automation with regex support, placeholders, counter tracking, and various metadata extraction (dates, sizes, EXIF data)
Who should use it
Users who need to bulk-rename large sets of files (photos, downloads, media libraries) and want a powerful yet terminal-based workflow with regex, EXIF/date/size placeholders, and text transformations.
Who should avoid it
Users who only need to rename a single file occasionally, prefer a fully graphical desktop app, or are uncomfortable with regex/CLI tools and placeholder syntax.
Stars over time
+10 stars in the last 2 days
How it works
A quick walkthrough in plain English
How renux works
Step 1 of 3
You interact with it
Open renux, send a request, or connect it to your stack.
Features
Advantages
- Open source (MIT)
- Active Python ecosystem
- Self-hosted deployment options
Disadvantages
- Requires operational ownership for self-hosted setups
- Community support varies by project maturity
Installation
cloud
No cloud-specific installation instructions provided in the README.
docker
No official Docker/Docker Compose support mentioned in the README. The tool can be used inside containerized environments.
native
Install via pipx: `pipx install renux` or via pip: `pip install renux`
compose
No official Docker Compose support mentioned in the README. The tool can be used inside containerized environments.
FAQ
How do I install renux?
Install renux using pipx (recommended) with: `pipx install renux`. Alternatively, you can use pip with `pip install renux`.
How do I perform a basic file rename with renux?
Run `renux [directory] [pattern] [replacement]`. For example, to rename files starting with 'IMG_' to 'Image_': `renux my_photos/ IMG_ Image_`. By default, renux opens a TUI for confirmation before applying changes.
How can I use regex for advanced renaming?
Use the `-r` flag to enable regex mode. For example, to capture and reuse groups: `renux my_documents "document (\d).pdf" "doc (\1).pdf" -r`. Capturing groups with parentheses can be referenced in the replacement string using \1, \2, etc.
How do I add counters or dates to filenames?
Use placeholders in the replacement string. For a counter: `{counter(start=1,step=1,padding=1)}` e.g., `{counter}` produces 01, 02, 03. For dates: `{created_at(%Y)}` for creation year, `{modified_at(%Y-%m-%d)}` for modified date, or `{now(%Y)}` for current date. Format codes follow Python's strftime syntax.
How can I preview changes or apply them without the TUI?
Use headless mode flags: `--dry-run` previews changes without modifying any files or opening the TUI. Use `-y` or `--yes` to apply renames immediately without the TUI. For scripting, combine these with the basic syntax: `renux directory pattern replacement --dry-run` or `renux directory pattern replacement -y`.
How do I apply text transformations like slugify or camelCase?
Use the `|filter` syntax in the replacement. For example, to slugify filenames: `renux my_files/ "(.*)" "{filename|slugify}" -r`. Available transformations include: `lower`, `upper`, `camel`, `pascal`, `snake`, `kebab`, `title`, `strip`, and `reverse`.
Featured in Videos
YouTube tutorials and walkthroughs for renux
Alternatives
Similar projects ranked by category, topics, and text overlap.