在我的 Debian 系统(嗯,我的 LMDE 系统,但足够接近)上,我至少有 3 个不同的rename
程序:
/usr/local/bin/rename
:这是一个 Perl 脚本,由 Tom Christiansen 编写。奇怪的是,我似乎找不到安装它的软件包:$ dpkg -S /usr/local/bin/rename dpkg-query: no path found matching pattern /usr/local/bin/rename
/usr/bin/prename
:另一个 perl 脚本,由 Robin Barker 编写,这个是软件包的一部分perl
:$ dpkg -S /usr/bin/prename perl: /usr/bin/prename
/usr/bin/file-rename
:又一个 Perl 脚本,没有明确的作者信息,但提到了 Larry(大概是 Wall)和 Robin(大概是 Barker)。这个是由rename
软件包安装的,并且也符号链接到/usr/bin/rename
:$ dpkg -S /usr/bin/file-rename rename: /usr/bin/file-rename
我也有,rename.ul
但util-linux
我们暂时忽略它。这 3 个 Perl 脚本有什么区别?他们似乎都有相同的手册页,man rename
并且man file-rename
都给man prename
了我相同的页面。
我可以自己浏览脚本并尝试理解其中的差异,但这并不是微不足道的,我希望有人会知道每个脚本都有哪些其他人没有的功能。解释为什么 Debian 世界需要三个单独的 Perl 重命名脚本的奖励积分。
答案1
不确定这是否应该是一条评论,但这只是部分答案--Bug#735134: perl: rename(1) 很古老似乎已经埋下了混乱的种子。具体来说:
总结一下:多年来,perl 软件包提供了 /usr/bin/rename,这是一个在 perl 中实现的独立实用程序。问题是我们不想再提供 perl 包中的实用程序,因为它已本地添加到 debian/ 内并且不再维护。维护版本作为单独的软件包 libfile-rename-perl 提供。
上面提到libfile-rename-perl
的现在被替换为rename
:
$ apt-cache show rename | head
Package: rename
Version: 0.20-3
Installed-Size: 69
Maintainer: Debian Perl Group <[email protected]>
Architecture: all
Replaces: libfile-rename-perl
Provides: libfile-rename-perl
Depends: perl
Conflicts: libfile-rename-perl
Description-en: Perl extension for renaming multiple files
因此,Perl 有自己的rename
,不是由 Debian 维护的,而是提供了/usr/bin/prename
. Debian 开发者维护着rename
包(显然以前称为libfile-rename-perl
)是提供以下内容的包/usr/bin/rename
: 符号链接,/etc/alternatives/rename
其本身是脚本的符号链接/usr/bin/file-rename
。
Tom Christiansen 的脚本与 Perl 的模块捆绑在一起Unicode::Tussle
。您可能已经安装了它,这就是所提供的/usr/local/bin/rename
。