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

问题描述 投票:0回答:8

许多站点(包括各种 SO 文章)都在谈论使用 Perl 表达式重命名文件的“重命名”。

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

我怎样才能得到这里这里这里提到的更强大的重命名实用程序?

我正在运行 Fedora 20。我当前的重命名命令来自

util-linux
包,显然我需要更好的 Perl 版本。

linux perl bash rename file-rename
8个回答
21
投票

我只能代表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 重命名有时在那里起作用。可能在我安装之前

util-linux
.

如果您将 Perl 重命名为

/usr/local/bin
,它将优先于
rename
中的
util-linux
。安装到
/usr/local/share/man/man1/
.

时,联机帮助页也是如此

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


19
投票

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

这是一个关于使用 cpan 的教程

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

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

要安装 perl rename,您可以执行以下操作。您可能需要安装一些依赖项,通常只需按回车即可

cpan
cpan1> 安装文件::重命名
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/文件重命名-0.20.tar.gz
./Build install -- OK

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

4
投票

我必须做以下事情:

# In bash
sudo yum install perl-CPAN
sudo cpan

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

3
投票

在 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

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


2
投票

对于 Arch Linux,其

sudo pacman -S perl-rename

1
投票

对于 Debian 系列 (

.deb
) 发行版,我推荐@SzG 的answer.

对于 RedHat 家族 (

.rpm
) 发行版(例如 Fedora),如果您的时间 precious(像我的),您可以通过
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

来源


0
投票

我创建了一篇关于 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

0
投票

我最近不得不在 Docker 容器中安装光荣的 Perl

rename
包到 Alpine Linux 以进行 Gitlab CI/CD 操作:

apk update
apk add --no-cache make perl-utils
cpan File::Rename
© www.soinside.com 2019 - 2024. All rights reserved.