How to install regexp enabled 'rename' on fedora?

9

1

I have a batch rename task and I find the 'rename' command in Ubuntu and Fedora is different.

In Ubuntu, rename is written in Perl and has regexp support. Is there anyway to install it on Fedora?

Ning Sun

Posted 2011-06-26T12:35:47.133

Reputation: 517

Answers

2

The Perl script (by Larry Wall, himself) is called rename.pl

You will then need to save it in suitable directory. Probably /usr/local/bin/ and make sure it's executable, by typing

sudo chmod +x /usr/local/bin/rename.pl

pavium

Posted 2011-06-26T12:35:47.133

Reputation: 5 956

5

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

nelaaro

Posted 2011-06-26T12:35:47.133

Reputation: 9 321

3

Install prename (Perl version of rename):

sudo dnf install prename

broco lee

Posted 2011-06-26T12:35:47.133

Reputation: 31

0

For Debian-family (.deb) distros, I recommend @SzG's answer over on StackOverflow.

For RedHat-family (.rpm) distros (e.g. Fedora), if your time is precious (like mine), you can download, compile, and install, from source via cpan in one, terse command:

# Replace `rename-1.9` below with another version if desired ;) 
curl -L "http://search.cpan.org/CPAN/authors/id/P/PE/PEDERST/rename-1.9.tar.gz" | tar -xz && ( cd "rename-1.9"; perl "Makefile.PL"; make && make install ) && rm -rf "rename-1.9"

Note:

INSTALL_BASE can be set to modify the base installation directory.

e.g. perl "Makefile.PL" INSTALL_BASE=/usr/local

source

Note: Same answer but with superior syntax highlighting over on StackOverflow

Travis Clarke

Posted 2011-06-26T12:35:47.133

Reputation: 161