所有重命名是怎么回事:预命名、重命名、文件重命名?

所有重命名是怎么回事:预命名、重命名、文件重命名?

在我的 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.ulutil-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

相关内容