The underlying design features a modular, dynamic approach to generating filenames and ships with a variety of specialized modules for renaming e.g. fonts or images, and more general ones - such as content-digests, simple counters or regex captures.
See the examples below, to get an idea of how everything works!
bulkrename -[vqc] [-l LIMIT] [-m MODULE ARGS] [-f FORMAT] [FILE [FILE..]]
bulkrename --helpFiles are renamed in accordance with the given FORMAT string. If no FORMAT is specified, the output will exactly match the input. By default no action is taken and a list of planned changes is printed. Pass --commit to actually rename files.
In order to keep a good performance profile modules must be enabled explicitly to be used and some modules accept additional flags to control their output.
$ git clone https://github.com/4nickel/bulkrename
$ cd bulkrename
$ pip install --user -r requirements.txt| Module | Description | Arguments | |
|---|---|---|---|
| hash | Content digest | --algorithm [md5|sha256] | Select algorithm |
| mime | Try to detect MIME type | ||
| number | Simple counter | --number N | Start counting from N |
| regex | Capture via regex | --regex REGEX | Regex to use |
| stat | Unix file stat command | ||
| image | Image dimensions | ||
| font | Font information |
| Format | Description |
|---|---|
| name | Contains the original file name, without extension |
| ext | Contains the original extension. May be empty |
| Format | Description |
|---|---|
| hash | The content digest |
| Format | Description |
|---|---|
| mime | Best-effort guess of the MIME-type. May be incorrect! |
| Format | Description |
|---|---|
| number | The number N of the file |
The regex will be run against every file name. You can access any named capture group in the format string. Very flexible and powerful.
| Format | Description |
|---|---|
| mode | File mode |
| inode | Inode number |
| device | Device |
| nlink | Number of hardlinks |
| uid | User ID |
| gid | Group ID |
| size | Size in bytes |
| atime | Last accest time |
| mtime | Last modification time |
| ctime | Birth time |
| Format | Description |
|---|---|
| width | The width of the image file in pixels |
| height | The height of the image file in pixels |
| ratio | The ratio of width to height |
Add prefix/suffix:
$ bulkrename -f 'prefix-{name}{ext}' -- ..files..
$ bulkrename -f '{name}-suffix{ext}' -- ..files..Content digest - in this case the md5 algorithm is used:
bulkrename -m hash -a md5 -f '{hash}{ext}' -- ..files..Incrementing counter - files are numbered in the order they appear as arguments:
bulkrename -m number '{number}{ext}' -- ..files..Rename with regex:
bulkrename -m regex -r '(?P<capture>.*)' -f 'your.{capture}.here' -- ..files..Fix mime types:
bulkrename -m mime -f '{name}{mime}' -- ..files..Add mtime or other file stats:
bulkrename -m stat -f '{name}-{mtime}{ext}' -- ..files..Image width and height:
bulkrename -m image -f '{name}_{width}x{height}{ext}' -- ..files..