https://github.com/ryym/rnm
Batch rename files and folders, recursively
https://github.com/ryym/rnm
Last synced: 4 months ago
JSON representation
Batch rename files and folders, recursively
- Host: GitHub
- URL: https://github.com/ryym/rnm
- Owner: ryym
- License: mit
- Created: 2016-08-21T08:20:01.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-06-22T14:44:54.000Z (almost 8 years ago)
- Last Synced: 2024-06-20T12:47:59.242Z (11 months ago)
- Language: Go
- Homepage:
- Size: 23.4 KB
- Stars: 5
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# rnm
[![travis][travis-badge]](https://travis-ci.org/ryym/rnm)
[travis-badge]: https://travis-ci.org/ryym/rnm.svg?branch=travis
Batch rename files and folders.
**Note that this project is a Go implementation of [75lb/renamer](https://github.com/75lb/renamer)**
and most of the README contents are copied from the original repository.## Install
```sh
$ go get github.com/ryym/rnm/cmd/rnm
```## Usage
```sh
$ rnm [options]
```### -f, --find <string>
The find string, or regular expression when `--regex` is set. If not set, the whole filename will be replaced.
### -r, --replace <string>
The replace string. With `--regex` set, `--replace` can reference parenthesised substrings from `--find` with $1, $2, $3 etc. If omitted, defaults to a blank
### -e, --regex
When set, --find is intepreted as a regular expression.
### -d, --dry-run
Used for test runs. Set this to do everything but rename the file.
**Don't forget to test your rename first using `--dry-run`!**
## Examples
Some real-world examples.
**Windows users**: the single-quotation marks used in the example commands below are for bash (Mac/Linux) users, please replace these with double-quotation marks on Windows.
### Simple replace
```sh
$ rnm --find '[bad]' --replace '[good]' *
```
BeforeAfter
.
├── A poem [bad].txt
├── A story [bad].txt
.
├── A poem [good].txt
├── A story [good].txt
### Strip out unwanted text
```sh
$ rnm --find 'Season 1 - ' *
```
BeforeAfter
.
├── Season 1 - Some crappy episode.mp4
├── Season 1 - Load of bollocks.mp4
.
├── Some crappy episode.mp4
├── Load of bollocks.mp4
### Simple filename cleanup
```sh
$ rnm --regex --find '.*_(\d+)_.*' --replace 'Video $1.mp4' *
```
BeforeAfter
.
├── [ag]_Annoying_filename_-_3_[38881CD1].mp4
├── [ag]_Annoying_filename_-_34_[38881CD1].mp4
├── [ag]_Annoying_filename_-_53_[38881CD1].mp4
.
├── Video 3.mp4
├── Video 34.mp4
├── Video 53.mp4
### if not already done, add your name to a load of files
```sh
$ rnm --regex --find '(data\d)(\.\w+)' --replace '$1 (checked by Lloyd)$2' *
```
BeforeAfter
.
├── data1.csv
├── data2 (checked by Lloyd).csv
├── data3.xls
.
├── data1 (checked by Lloyd).csv
├── data2 (checked by Lloyd).csv
├── data3 (checked by Lloyd).xls
### rename files and folders, recursively
```sh
$ rnm --find 'pic' --replace 'photo' '**/*'
```
BeforeAfter
.
├── pic1.jpg
├── pic2.jpg
└── pics
├── pic3.jpg
└── pic4.jpg
.
├── photo1.jpg
├── photo2.jpg
└── photos
├── photo3.jpg
└── photo4.jpg
### prefix files and folders, recursively
```sh
$ rnm --regex --find '^' --replace 'good-' '**/*'
```
BeforeAfter
.
├── pic1.jpg
├── pic2.jpg
└── pics
├── pic3.jpg
└── pic4.jpg
.
├── good-pic1.jpg
├── good-pic2.jpg
└── good-pics
├── good-pic3.jpg
└── good-pic4.jpg