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

Wor*_*ess 26 linux bash perl rename file-rename

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

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

我怎样才能掌握这里,这里这里提到的更强大的重命名工具?

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

SzG*_*SzG 17

我只能说Debian.这两个程序被调用

  • /usr/bin/rename.ulutil-linux包中(因此.ul后缀)
  • /usr/bin/prenameperl包中

实际rename命令通过该/etc/alternatives机制起作用

  • /usr/bin/rename 是一个符号链接 /etc/alternatives/rename
  • /etc/alternatives/rename 是一个符号链接 /usr/bin/prename

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

如果你安装Perl-rename,/usr/local/bin它将优先renameutil-linux.安装到的联机帮助页也是如此/usr/local/share/man/man1/.

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

  • Re:Cygwin,Red Hat拥有核心`cygwin1.dll`的版权,但只支付一名全职开发人员来处理Cygwin,她(Corinna Vinschen)不能使用Cygwin Perl.绝大多数Cygwin的工作都是由社区志愿者完成的,他们并不局限于做出与Fedora相匹配的决策.Cygwin Perl [目前维护](http://cygwin.com/cygwin-pkg-maint)由几个人提供,他们都没有得到红帽在Cygwin工作的报酬.(Red Hat员工Eric Blake维护着"perl-error"软件包,但他公开表示他的Cygwin工作是全天候的.) (2认同)
  • 棒极了.Cygwin是Windows上最可靠的软件.:-) (2认同)
  • 如果你想贡献一个`perl-rename`包,我会支持它.您也会在Cygwin软件包维护者列表中注意到我的名字.不,我不想创建该包.我个人选择花式重命名 - 当Bash单行不合适时 - 是'mmv`而我几乎不需要使用它. (2认同)

nel*_*aro 15

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

这是一个使用cpan 的教程.

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

重命名--help
调用:重命名为文件...

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

cpan
cpan 1 >安装文件::重命名
CPAN:Storable loaded ok(v2.20)
阅读'/root/.cpan/Metadata'
数据库生成于2015年9月30日星期三08:17:02 GMT
运行模块安装'File :: Rename'
....正在
运行Build install
安装/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
./Build install - 好的

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

which rename  
/usr/bin/rename  
Run Code Online (Sandbox Code Playgroud)

当你真的想要这个.

/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
            ';'.
Run Code Online (Sandbox Code Playgroud)

我只是把它放进去/usr/bin/但有一个略微不同的名字,以确保我没有打破任何现有的脚本/程序依赖旧的.

ln -s /usr/local/bin/rename /usr/bin/rename.pl
Run Code Online (Sandbox Code Playgroud)


Arp*_*ath 5

在 RedHat 8.4 上(但可能适用于 Fedora)

sudo yum install perl-CPAN
sudo cpan
install module::Build
install File::Rename
Run Code Online (Sandbox Code Playgroud)

比你可以创建一个别名:

alias prename='/usr/local/bin/rename'
Run Code Online (Sandbox Code Playgroud)

一个例子:

touch pic.jpeg
prename 's/\.jpeg$/.jpg/' *.jpeg
Run Code Online (Sandbox Code Playgroud)

在这里,您创建一个扩展名为 .jpeg 的空文件。下一行重命名当前目录中所有具有 .jpeg 扩展名的文件:它从这些文件的 jpeg 扩展名中删除 e。(第一行是为了确保目录中至少有一个类似的文件。)

(在 Debian/Ubuntu 上,您可以安装该rename软件包,然后您将拥有rename与上面相同的命令prename。另请阅读 SzG 关于替代方案和符号链接的答案:它可能像我写的那么简单,也可能不像我写的那么简单。

或者,您需要安装 libpath-tiny-perl 软件包来安装 CPAN。)