Get the Perl rename utility instead of the built-in rename
Solution 1
I can only speak for Debian. The two programs are called
-
/usr/bin/rename.ul
from theutil-linux
package (hence the .ul suffix) -
/usr/bin/prename
from theperl
package
The actual rename
command works via the /etc/alternatives
mechanism, whereby
-
/usr/bin/rename
is a symlink to/etc/alternatives/rename
-
/etc/alternatives/rename
is a symlink to/usr/bin/prename
The same problem has been bugging me on Cygwin, which is a Red Hat product, so should be more similar to Fedora. I'll have a look on my company laptop on Monday. And I remember the Perl-rename having worked there sometimes. Probably before I installed util-linux
.
If you install the Perl-rename to /usr/local/bin
it will have precedence over rename
from util-linux
. Same goes for the manpage when installed to /usr/local/share/man/man1/
.
I've just created a separate Perl-rename package on Github: https://github.com/subogero/rename
Solution 2
You can install it using cpan, which is the perl repository similar to pip for python.
Here is a tutorial on using cpan.
If you try to run rename it it looks like this
rename --help
call: rename from to files...
To install the perl rename you can do the following. You might need to install a few dependencies, you can generally just push enter
cpan
cpan1> install File::Rename
CPAN: Storable loaded ok (v2.20)
Going to read '/root/.cpan/Metadata'
Database was generated on Wed, 30 Sep 2015 08:17:02 GMT
Running install for module 'File::Rename'
....
Running Build install
Installing /usr/local/share/man/man1/rename.1
Installing /usr/local/share/perl5/File/Rename.pm
Installing /usr/local/share/man/man3/File::Rename.3pm
Installing /usr/local/bin/rename
Writing /usr/local/lib64/perl5/auto/File/Rename/.packlist
RMBARKER/File-Rename-0.20.tar.gz
./Build install -- OK
That is how you would install the rename from cpan.
Next is to get it working on your system. As you might have more then one rename installed.
which rename
/usr/bin/rename
When you actually want this one.
/usr/local/bin/rename --help
Usage:
rename [ -h|-m|-V ] [ -v ] [ -n ] [ -f ] [ -e|-E *perlexpr*]*|*perlexpr*
[ *files* ]
Options:
-v, -verbose
Verbose: print names of files successfully renamed.
-n, -nono
No action: print names of files to be renamed, but don't rename.
-f, -force
Over write: allow existing files to be over-written.
-h, -help
Help: print SYNOPSIS and OPTIONS.
-m, -man
Manual: print manual page.
-V, -version
Version: show version number.
-e Expression: code to act on files name.
May be repeated to build up code (like "perl -e"). If no -e, the
first argument is used as code.
-E Statement: code to act on files name, as -e but terminated by
';'.
I just put it into /usr/bin/
but with a slight different name to make sure I did not break any existing scripts / programs the depend on the old one.
ln -s /usr/local/bin/rename /usr/bin/rename.pl
Solution 3
I had to do the following:
# In bash
sudo yum install perl-CPAN
sudo cpan
# In CPAN shell
install Module::Build
install File::Rename
Solution 4
On RedHat 8.4
sudo yum install perl-CPAN
sudo cpan
install module::Build
install File::Rename
than you can create an alias:
alias prename='/usr/local/bin/rename'
an use:
touch pic.jpeg
prename 's/\.jpeg$/.jpg/' *.jpeg
Solution 5
For Arch Linux, its
sudo pacman -S perl-rename
WorldsEndless
Updated on December 30, 2021Comments
-
WorldsEndless over 2 years
Many sites (including various SO articles) talk about using "rename" using Perl expressions to rename files.
This would be perfect, but apparently this is not the rename utility I have, and none of these articles seem to comprehend that there are multiple versions of "rename" and I can't seem to find where to get version that accepts Perl expressions.
How can I get my hands on the more powerful rename utility mentioned here, here, and here?
I'm running Fedora 20. My current rename command is from the
util-linux
package and apparently I need the Perl version, which is better. -
WorldsEndless about 10 yearsLooks great. If you'll just add a line I think the answer will be complete: how to install your git package (just a line about "sudo make"). Thanks!
-
Warren Young about 10 yearsRe: Cygwin, Red Hat own the copyright on the core
cygwin1.dll
but pays only one full-time developer to work on Cygwin, and she (Corinna Vinschen) doesn't work on Cygwin Perl. The vast majority of Cygwin work is done by community volunteers, and they are not constrained in making decisions to match Fedora. Cygwin Perl is currently maintained by several people, none of whom get paid by Red Hat to work on Cygwin. (Eric Blake, a Red Hat employee, maintains theperl-error
package, but he's publicly stated that his Cygwin work is off the clock.) -
SzG about 10 yearsThat's amazing. And Cygwin's been the most reliable piece of software on Windows for ages. :-)
-
Warren Young about 10 yearsIf you wanted to contribute a
perl-rename
package, I'd support it. You'll notice my name on the Cygwin package maintainer list, too. And no, I don't want to create that package. My personal choice for fancy renaming – when Bash one-liners aren't appropriate — ismmv
and I hardly ever need to use it. -
林果皞 about 8 yearsFor my case, i need
sudo cpan
. -
Pysis over 7 yearsEven
sudo cpan
and the install didn't give me this script. Fedora 24. Is it because I already installed the GitHub answer? I had uninstalled that, and also directly referenced/usr/bin/rename
, but didn't get this 'super-powered' version. -
pjh about 5 yearsFor RedHat-family distros you should be able to just
yum install prename
. The 'prename' package is in the EPEL repository. -
Andrew Keeton over 4 years@Pysis It didn't install
rename
for me, either. It did install afile-rename
that seems to be the same program. EDIT: I'm using Strawberry Perl. -
EricS over 2 yearsRan this on openSuse and it replaced the existing /usr/bin/rename which is not what I wanted, I wanted to have both. Any idea how to get the old one back?