RenameToIX is a visual Linux Gtk file renamer featuring an advanced macro ecosystem, seamlessly integrating with Nemo, Nautilus, and Thunar file managers.
For crenametoix, the console version without Gtk dependencies, read here
Simple macro example:
Python lambda expression example:
Reverse Geocoding macro example:
Doc Header macro example:
Read section Integrate on now to integrate with Nemo, Nautilus and Thunar.
If you find this project useful, please, read the Support this Project on how to contribute.
-
GUI and Console mode. (¹)
-
Single click macro.
-
Counter, file datetime, and extension Macros.
-
Function Macros with regex group capture:
lower,upper,capitalizeandtitle. -
Python lambda expressions macro.
-
Reverse geocoding of JPEG images from GPS information macro via geo plugin.
-
Header of Word documents macro via doc plugin.
-
Custom macro extensions using plugins.
-
Start index for counter macro.
-
Configurable list of macros.
-
Drag'n'Drop.
-
Move files up and down.
-
Revert previous renames (first activate on Settings dialog). (¹)
-
Send notification after renames (first activate on Settings dialog). (¹)
-
Integration with Nemo, Nautilus and Thunar File Manager. (¹)
-
Limited support for mtp devices (Smartphones, Cameras, etc...). (¹)
-
Translated into multiple languages 1
(¹) - supported only on renametoix but not on crenametoix
sudo add-apt-repository ppa:a-bentofreire/toix
sudo apt-get update
sudo apt install renametoixcrenametoix is a version of renametoix for console only without Gtk dependencies,
it supports all the features including plugins, except: translations, mtp devices, revert and notifications.
Configuration files aren't generated.
sudo add-apt-repository ppa:a-bentofreire/toix
sudo apt-get update
sudo apt install crenametoixcrenametoix can also be installed via pip
pip install crenametoixRenameToIX uses xdg-open and notify-send external commands.
%n, %0n ... %00000n- counter%B- file basename (without extension)%E- file extension%Y- file 4-digit year%m- file 2-digit month%d- file 2-digit day%H- file 2-digit hour%M- file 2-digit minute%S- file 2-digit second%0{upper}%0{u}- uppercase (function)%0{lower}%0{l}- lowercase (function)%0{capitalize}%0{c}- capitalize (function)%0{title}%0{t}- capitalize (function)%:{expr}- evaluates python lambda expressions%!{geo:%country%, %city%}- replaces with the "country", "city" from the JPEG image GPS info via geo plugin%!{doc:%header%}- replaces with the "header" with the first header in a doc file doc plugin
The macro functions can also be used with regular expressions to capture groups.
ex1:
- Replace:
%0{title} - Filename:
my document.pngwill becomeMy Document.png
ex2:
- Find:
..(NEW).(design) - Replace:
%1{l}-%2{u} - Filename:
n-myNEW design.pngwill becomen-new-DESIGN.png
ex3:
- Find: ``
- Replace:
new-%B ready - Filename:
design.pngwill becomenew-design ready.png
The %:{expr} will internally evaluate a lambda expression: eval(f"lambda m: {expr}")(groups)
where groups are:
- if regular expressions, then are the captured groups from a regular expression.
- otherwise, it's the text to find.
ex:
- Find:
^(.*)-(.*)$ - Replace:
%:{m[2] - m[1]} - Regular Expression:
checked. - Filename:
code-actions.pywill becomeActions - Code.py
- The expression can't contain a closed curly bracket
}. - The evaluator doesn't do any security checks, so run it at your own risk.
The %!{plugin_name:expr} will call an external plugin to evaluate the expression.
- Plugins are python scripts located on
/usr/lib/renametoix/plugins. - A plugin must have a function named
get_worker(), returning an instance of a class with the following methods: - The expression can't contain a closed curly bracket
}.
| Method | Description |
|---|---|
is_slow(self) |
returns True if the plugin requires slow operations |
get_extensions(self) |
returns a list of file extensions supported |
eval_expr(self, macro, filename, groups) |
evaluates a macro. It should be a fast operation |
prepare(self, files) |
for each file, it will prepare the macro evaluation if is_slow is True, it will run in a working thread if it's GUI mode |
Geo Plugin performs reverse geocoding.
- Requires install python packages:
pip install geopy piexif. - Supports the following geocoding fields:
country,state,city,postcode,suburb. - Supports
.jpgand.jpegfile extensions. - Ending spaces, commas and semi-commas are striped.
ex:
- Replace:
%!{geo:%country%, %city%} - Filename:
IMG_.jpgwill becomeMyCountry, MyCity.jpg
Doc Plugin extracts the first header from a Word doc/docx file.
- Requires install python package:
pip install python-docx. - Supports the following geocoding fields:
header. - Supports
.docand.docxfile extensions.
ex:
- Replace:
%!{doc:%header%} - Filename:
a.docxwill becomeMyHeaderH1.docx
To activate on console mode, use --console on command line:
usage: renametoix [-h] [-console] [-start-index START_INDEX] [-reg-ex] [-include-ext] [-find FIND] [-replace REPLACE] [-allow-revert] [-test-mode] [-revert-last] [files ...]
positional arguments:
files Source files
options:
-h, --help show this help message and exit
-console Console mode (¹)
-start-index START_INDEX
Start index used with there is a %0n macro
-reg-ex Uses regular expressions on the find field
-include-ext Renames including the file extension
-find FIND Text to Find
-replace REPLACE Text to Replace
-allow-revert Generates a revert file (console mode) (¹)
-test-mode Outputs only the new result, doesn't rename (console mode) (¹)
-revert-last Reverts last rename and exits (¹)
(¹) - supported only on renametoix but not on crenametoix
If the previous console mode rename was executed with -allow-revert, then:
renametoix -revert-last will revert the last rename.
RenameToIX can be integrated with Nemo, Nautilus and Thunar.
On RenameToIX application, click on the Settings button, and then Integrate button.
- Nemo Bulk Rename: When you press F2 it will use RenameToIX instead of bulky.
- Nemo Action: On context menu, it will include an item named RenameToIX.
- Nautilus Script: On context menu Scripts, it will include an item named RenameToIX.
- Thunar Action: On context menu, it will include an item named RenameToIX.
- English
- Portuguese
- Spanish
- German
- Russian
- Ukrainian
RenameToIX can rename files on mtp devices with the following limitations:
- It doesn't support revert.
- The file is copied and the deleted the original, this is a slow operation and doesn't preserves the timestamp.
- When modifying the Find Replace fields, it's checking if the new filename exists on the destination. This is a slow operation.
To improve translations:
- Clone the project from Github.
- Update the translation on
tools/l10n.po. - Run
convert-l10n.sh.
If you find this project useful, consider supporting it:
- Donate:
- Visit the project homepage
- Give the project a ⭐ on Github
- Translate into your language
- Spread the word
- Follow me:
GPLv3 License
- claimsecond - Translations in Russian and Ukrainian
(c) 2024-2025 Alexandre Bento Freire