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

Linux 获取Perl重命名实用程序,而不是内置的重命名,linux,perl,bash,rename,file-rename,Linux,Perl,Bash,Rename,File Rename,许多网站(包括各种SO文章)都谈到使用Perl表达式来重命名文件 这将是完美的,但显然这不是我拥有的重命名实用程序,而且这些文章似乎都不理解“重命名”有多个版本,我似乎找不到从哪里获得接受Perl表达式的版本 我怎样才能得到我的手上提到的更强大的重命名实用程序,和 我在跑Fedora 20。我当前的rename命令来自util-linux包,显然我需要Perl版本,它更好 我只能代表Debian说话。这两个程序称为 /usr/bin/rename.ul来自util-linux包(因此后缀为.u

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

这将是完美的,但显然这不是我拥有的重命名实用程序,而且这些文章似乎都不理解“重命名”有多个版本,我似乎找不到从哪里获得接受Perl表达式的版本

我怎样才能得到我的手上提到的更强大的重命名实用程序,和


我在跑Fedora 20。我当前的rename命令来自
util-linux
包,显然我需要Perl版本,它更好

我只能代表Debian说话。这两个程序称为

  • /usr/bin/rename.ul
    来自
    util-linux
    包(因此后缀为.ul)
  • 来自
    perl
    包的
    /usr/bin/prename
实际的
rename
命令通过
/etc/alternations
机制工作,其中

  • /usr/bin/rename
    是指向
    /etc/alternations/rename
  • /etc/alternations/rename
    是指向
    /usr/bin/prename
同样的问题一直困扰着我,Cygwin是一款红帽产品,所以应该更像Fedora。星期一我会看一下我公司的笔记本电脑。我记得Perl重命名有时在那里工作。可能在我安装
util linux
之前

如果将Perl重命名安装到
/usr/local/bin
,它将优先于
util linux
中的
rename
。安装到
/usr/local/share/man/man1/
时,手册页也是如此

我刚刚在Github上创建了一个单独的Perl重命名包:

您可以使用安装它,这是一个类似于pip for python的Perl存储库

下面是一个关于使用cpan的例子

如果您尝试运行重命名,它看起来像这样

重命名--帮助
调用:从重命名为文件

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

cpan
cpan>安装文件::重命名
CPAN:可存储加载正常(v2.20)
正在读取“/root/.cpan/Metadata”
数据库于2015年9月30日星期三08:17:02 GMT生成
正在运行模块“File::Rename”的安装
..
正在运行构建安装
正在安装/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/File-Rename-0.20.tar.gz
/构建/安装-确定

这就是从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

我必须做到以下几点:

# In bash
sudo yum install perl-CPAN
sudo cpan

# In CPAN shell
install Module::Build
install File::Rename
对于Debian系列(
.deb
)发行版,我推荐@SzG

对于RedHat系列(
.rpm
)发行版(如Fedora),如果您的时间宝贵(如我的),您可以通过一个简洁的命令从源代码下载、编译和安装:

# 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\u BASE
可以设置为修改基本安装目录

例如
perl“Makefile.PL”INSTALL\u BASE=/usr/local


如果你有perl,它应该也可以作为
prename
使用。@devnull我有perl,但是
man-prename
prename
sudo-yum-search-prename
都是空手而归。我已经下载了脚本,修复了插入的换行符,并使用了它,可以在网站上找到脚本本身;它工作正常。如果有人能把一个干净的下载(有没有带手册页的?)以及如何全局使用它,而不是编写我自己的别名来访问我卡在某个地方的perl文件,我愿意标记为“已回答”。如果您的计算机中没有根访问权限,下面是脚本的要点(必要的换行符已修复,如@WorldsEndless所述)字体看起来很棒。如果您只需添加一行代码,我想答案将是完整的:如何安装git软件包(只需添加一行关于“SudoMake”的代码)。谢谢Re:Cygwin,Red Hat拥有核心
cygwin1.dll
的版权,但只支付一名全职开发人员使用Cygwin,而她(Corinna Vinschen)不使用Cygwin Perl。Cygwin的绝大多数工作都是由社区志愿者完成的,他们不受限制地做出与Fedora相配的决定。Cygwin Perl是由几个人开发的,他们中没有一个人因为使用Cygwin而获得红帽的报酬。(红帽员工埃里克·布莱克(Eric Blake)负责维护
perl错误
包,但他公开表示他的Cygwin工作已经过时了。)这真是太神奇了。多年来,Cygwin一直是Windows上最可靠的软件。:-)如果您想贡献一个
perl重命名
包,我会支持它。你会注意到我的名字也出现在Cygwin软件包维护者列表上。不,我不想创建那个包。当Bash one行程序不合适时,我个人选择的奇特重命名是
mmv
,我几乎不需要使用它。就我而言,我需要
sudo-cpan
。即使
sudo-cpan
,安装也没有给我这个脚本。软呢帽24。是因为我已经安装了GitHub答案吗?我已经卸载了它,并且还直接引用了
/usr/bin/rename
,但没有得到这个“超级动力”版本。@Pysis它也没有为我安装
rename
。它确实安装了一个
文件重命名
,似乎是同一个程序。编辑:我正在使用草莓Perl.For RedHat fa