许多站点(包括各种 SO 文章)都在谈论使用 Perl 表达式重命名文件的“重命名”。
这将是完美的,但显然这不是我拥有的重命名实用程序,而且这些文章似乎都没有理解“重命名”的多个版本,而且我似乎无法找到从哪里获得接受 Perl 表达式的版本.
我怎样才能得到这里、这里和这里提到的更强大的重命名实用程序?
我正在运行 Fedora 20。我当前的重命名命令来自
util-linux
包,显然我需要更好的 Perl 版本。
我只能代表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
您可以使用 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
我必须做以下事情:
# In bash
sudo yum install perl-CPAN
sudo cpan
# In CPAN shell
install Module::Build
install File::Rename
在 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。 (第一行是为了确保目录中至少有一个这样的文件。)
对于 Arch Linux,其
sudo pacman -S perl-rename
对于 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
我创建了一篇关于 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
:
我最近不得不在 Docker 容器中安装光荣的 Perl
rename
包到 Alpine Linux 以进行 Gitlab CI/CD 操作:
apk update
apk add --no-cache make perl-utils
cpan File::Rename