- Rename files using a Perl Common Regular Expression (substitute 'foo' with 'bar' wherever found):
rename 's/foo/bar/' *
- Dry-run - display which renames would occur without performing them:
rename -n 's/foo/bar/' *
- Force renaming even if the operation would remove existing destination files:
rename -f 's/foo/bar/' *
- Convert filenames to lower case (use
-fin case-insensitive filesystems to prevent "already exists" errors):
rename 'y/A-Z/a-z/' *
- Replace whitespace with underscores:
rename 's/\s+/_/g' *
prename [-bfilnv] [-B prefix] [-S suffix] [-V method] [-Y prefix] [-z suffix] [--backup] [--basename-prefix=prefix] [--dry-run] [--force] [--help] [--no-stdin] [--interactive] [--just-print] [--link-only] [--prefix=prefix] [--suffix=suffix] [--verbose] [--version-control=method] [--version] perlexpr [files]...
prename renames the filenames supplied according to the rule specified as the first argument. The argument is a Perl expression which is expected to modify the
$_ string for at least some of the filenames specified. If a given filename is not modified by the expression, it will not be renamed. If no filenames are given on the command line, filenames will be read via standard input.
If a destination file is unwritable, the standard input is a tty, and the -f or --force option is not given, mv prompts the user for whether to overwrite the file. If the response does not begin with `y' or `Y', the file is skipped.
- -b, --backup
Make backup files. That is, when about to overwrite a file, rename the original instead of removing it. See the -V or --version-control option fo details about how backup file names are determined.
- -B prefix, --prefix=prefix
Use the simple method to determine backup file names (see the -V method or --version-control=method option), and prepend prefix to a file name when generating its backup file name.
- -f, --force
Remove existing destination files and never prompt the user.
- -h, --help
Print a summary of options and exit.
Disable reading of filenames from STDIN. Us it when your shell has nullglob enabled to make sure prename doesn't wait for input.
- -i, --interactive
Prompt whether to overwrite each destination file that already exists. If the response does not begin with `y' or `Y', the file is skipped.
- -l, --link-only
Link files to the new names instead of renaming them. This will keep the original files.
- -n, --just-print, --dry-run
Do everything but the actual renaming, insted just print the name of each file that would be renamed. When used together with --verbose, also print names of backups (which may or may not be correct depending on previous renaming).
- -v, --verbose
Print the name of each file before renaming it.
- -V method, --version-control=method
Use method to determine backup file names. The method can also be given by the RENAME_VERSION_CONTROL (or if that's not set, the VERSION_CONTROL) environment variable, which is overridden by this option. This option does not affect wheter backup files are made; it affects only the name of any backup files that are made.
The value of method is like the GNU Emacs `version-control' variable; prename also recognize synonyms that are more descriptive. The valid values are (unique abbreviations are accepted):
- existing or nil
Make numbered backups of files that already have them, otherwise simple backups. This is the default.
- numbered or t
Make numbered backups. The numbered backup file name for F is F.~N~ where N is the version number.
- simple or never
Make simple backups. The -B or --prefix, -Y or --basename-prefix, and -z or --suffix options specify the simple backup file name. If none of these options are given, then a simple backup suffix is used, either the value of SIMPLE_BACKUP_SUFFIX environment variable if set, or ~ otherwise.
Print version information on standard output then exit successfully.
- -Y prefix, --basename-prefix=prefix
Use the simple method to determine backup file names (see the -V method or --version-control=method option), and prefix prefix to the basename of a file name when generating its backup file name. For example, with -Y .del/ the simple backup file name for a/b/foo is a/b/.del/foo.
- -z suffix, -S suffix, --suffix=suffix
Use the simple method to determine backup file names (see the -V method or --version-control=method option), and append suffix to a file name when generating its backup file name.
To rename all files matching *.bak to strip the extension, you might say
prename 's/\e.bak$//' *.bak
To translate uppercase names to lower, you'd use
prename 'y/A-Z/a-z/' *
prename 's/\.flip$/.flop/' # rename *.flip to *.flop prename s/flip/flop/ # rename *flip* to *flop* prename 's/^s\.(.*)/$1.X/' # switch sccs filenames around prename 's/$/.orig/ */*.[ch]' # add .orig to source files in */ prename 'y/A-Z/a-z/' # lowercase all filenames in . prename 'y/A-Z/a-z/ if -B' # same, but just binaries! or even prename chop *~ # restore all ~ backup files
Two environment variables are used, SIMPLE_BACKUP_SUFFIX and VERSION_CONTROL. See “Options”.
mv(1) and perl(1)
If you give an invalid Perl expression you'll get a syntax error.
Peder Stray <email@example.com>, original script from Larry Wall.