获取Perl重命名实用程序而不是内置重命名

时间:2014-03-22 12:44:51

标签: linux perl bash rename file-rename

许多网站(包括各种SO文章)谈论使用"重命名"使用Perl表达式重命名文件。

这将是完美的,但显然这不是我所拥有的重命名实用程序,并且这些文章似乎都没有理解有多个版本的"重命名"我似乎无法找到接受Perl表达式的版本。

如何获得提及hereherehere的更强大的重命名工具?

我正在运行Fedora 20.我当前的重命名命令来自util-linux包,显然我需要Perl版本,这更好。

5 个答案:

答案 0 :(得分:17)

我只能说Debian。这两个程序叫做

    来自/usr/bin/rename.ul包的
  • util-linux(因此是.ul后缀)
  • 来自/usr/bin/prename包的
  • perl

实际的rename命令通过/etc/alternatives机制起作用,即

  • /usr/bin/rename/etc/alternatives/rename
  • 的符号链接
  • /etc/alternatives/rename/usr/bin/prename
  • 的符号链接

同样的问题一直困扰着Cygwin,这是一个Red Hat产品,所以应该更像Fedora。我星期一看看我公司的笔记本电脑。我记得Perl-rename曾经在那里工作过。可能在我安装util-linux之前。

如果您将Perl重命名安装到/usr/local/bin,它将优先于rename util-linux。安装到/usr/local/share/man/man1/时的联机帮助页也是如此。

我刚刚在Github上创建了一个单独的Perl-rename包:https://github.com/subogero/rename

答案 1 :(得分:14)

您可以使用cpan安装它,这是类似于pip for python的perl存储库。

这是使用cpan的tutorial

如果您尝试重命名,则看起来像这样

  

重命名--help
   呼叫:从文件重命名...

要安装perl重命名,您可以执行以下操作。您可能需要安装一些依赖项,通常只需按Enter键

即可
  

CPAN
  CPAN 1>安装File :: Rename
  CPAN:可以加载好(v2.20)
  去阅读' /root/.cpan/Metadata'
   数据库于2015年9月30日星期三08:17:02 GMT生成    运行模块的安装' File :: Rename'
  ....
  运行Build安装
  安装/usr/local/share/man/man1/rename.1
  安装/usr/local/share/perl5/File/Rename.pm
  安装/usr/local/share/man/man3/File::Rename.3pm
  安装/ usr / local / bin / rename
  写/usr/local/lib64/perl5/auto/File/Rename/.packlist
   RMBARKER /文件的重命名,0.20.tar.gz
   ./Build安装 - 确定

这就是你如何从cpan安装重命名。
接下来是让它在您的系统上运行。因为您可能安装了多个重命名。

which rename  
/usr/bin/rename  

当你真正想要这个时。

/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
            ';'.

我只是将它放入/usr/bin/,但名称略有不同,以确保我没有破坏任何现有的脚本/程序依赖于旧的脚本/程序。

ln -s /usr/local/bin/rename /usr/bin/rename.pl

答案 2 :(得分:1)

我必须做以下事情:

# In bash
sudo yum install perl-CPAN
sudo cpan

# In CPAN shell
install Module::Build
install File::Rename

答案 3 :(得分:1)

对于Debian家族(.deb)发行版,我推荐@ SzG的answer

对于RedHat家族(.rpm)发行版(例如Fedora),如果您的时间珍贵(如我的),您可以从源代码下载,编译和安装{ {3}}在一个简洁命令中:

# Install (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 )

# Cleanup
rm -rf "rename-1.9"

注意:

  

INSTALL_BASE可以设置为修改基本安装目录。

     

例如 perl "Makefile.PL" INSTALL_BASE=/usr/local

     

cpan

答案 4 :(得分:1)

在红帽 8.4 上

sudo yum install perl-CPAN
sudo cpan
install module::Build
install File::Rename

您可以创建别名:

alias prename='/usr/local/bin/rename'

使用:

touch pic.jpeg
prename 's/\.jpeg$/.jpg/' *.jpeg