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

thtygnil  于 2022-12-23  发布在  Perl
关注(0)|答案(7)|浏览(127)

许多站点(包括各种SO文章)都在讨论使用Perl表达式“rename”来重命名文件。
这将是完美的,但显然这不是我所拥有的重命名实用程序,而且这些文章似乎都没有理解“重命名”有多个版本,而且我似乎找不到哪里可以获得接受Perl表达式的版本。
我怎样才能获得前面提到的更强大的重命名实用程序hereherehere
我正在运行Fedora 20。我当前的重命名命令来自util-linux包,显然我需要Perl版本,这更好。

voase2hg

voase2hg1#

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

  • util-linux包中的/usr/bin/rename.ul(因此使用.ul后缀)
  • perl软件包中的/usr/bin/prename

实际的rename命令通过/etc/alternatives机制工作,其中

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

同样的问题一直困扰着我的Cygwin,它是一个红帽产品,所以应该更类似于Fedora。我会在星期一在我的公司笔记本电脑上看一看。我记得Perl重命名有时在那里工作。可能是在我安装util-linux之前。
如果你把Perl-rename安装到/usr/local/bin,它将优先于util-linux中的rename。同样的,当安装到/usr/local/share/man/man1/时,手册页也是如此。
我刚刚在Github上创建了一个单独的Perl重命名包:https://github.com/subogero/rename

lqfhib0f

lqfhib0f2#

你可以使用cpan来安装它,这是一个类似于pip for python的perl库。
这是一个关于使用cpan的tutorial
如果您尝试运行重命名,它将如下所示
重命名--帮助
调用:将从重命名为文件...
要安装perlrename,可以执行以下操作。您可能需要安装一些依赖项,通常只需按Enter键
CPAN公司
cpan 1〉安装文件::重命名
CPAN:可存储加载正常(v2.20)
正在读取"/root/. cpan/元数据"
数据库于2015年9月30日星期三08:17:02 GMT生成
正在运行模块"File::Rename"的安装
....
正在运行生成安装
安装/usr/本地/共享/man/man1/重命名.1
Installing /usr/local/share/perl5/File/Rename.pm
正在安装/usr/local/share/man/man3/文件::重命名.3pm
安装/usr/本地/bin/重命名
正在写入/usr/本地/lib64/perl5/自动/文件/重命名/. packlist
RMBARKER/File-Rename-0.20.tar.gz
./生成安装--确定
这就是从cpan安装rename的方法。
接下来是让它在你的系统上工作。因为你可能安装了多个重命名。

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
5uzkadbs

5uzkadbs3#

我不得不做以下事情:

# In bash
sudo yum install perl-CPAN
sudo cpan

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

8wtpewkr4#

在RedHat 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
bejyjqdl

bejyjqdl5#

对于Debian系列(.deb)发行版,我推荐@SzG的answer
对于RedHat系列(.rpm)发行版(例如Fedora),如果您的时间非常宝贵(像我一样),您可以通过cpan从源代码下载、编译和安装,只需一个简洁命令:

# 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

source

tjjdgumg

tjjdgumg6#

对于Arch Linux,其

sudo pacman -S perl-rename
6yjfywim

6yjfywim7#

我创建了一篇关于Perl在许多发行版中重命名的帖子:
https://unix.stackexchange.com/a/727288/12574

  • 基于rpm的发行版:
  • dnf install prename
  • archlinux
  • pacman -S perl-rename
  • *BSD
  • pkg install p5-File-Rename
  • Debian like/Ubuntu
  • apt install rename
  • slackware
  • slackbuild

相关问题