renux logo

renux

A terminal-based bulk file renamer with a TUI

pypibuild
Website GitHub

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

6555
Aug 30, 2026Sep 1, 2026

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

Terminal-based TUI for interactive file renaming
Advanced regex pattern matching with capturing groups
Comprehensive text transformation options (slugify, case changes, etc.)
Counter placeholders with customizable start, step, and padding
Date placeholders for creation, modification, and current date
File size placeholders with auto-scaled units
Image metadata placeholders (dimensions, capture date, camera info)
Location metadata placeholders (GPS latitude, longitude, altitude)
Video metadata placeholders (dimensions, frame rate, duration)
Backup, undo, and redo functionality for safe renaming
File exclusion via pattern matching (glob or exact)
Keyboard shortcuts for quick navigation and actions in TUI
Flexible apply-to options (name, extension, both)
Dry-run, headless mode, and undo/redo CLI commands for scripting
Support for a wide range of file types and metadata via placeholders

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`.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for renux

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare