所有重命名是什么:预命名、重命名、文件重命名?

ter*_*don 29 debian perl rename

在我的 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
    
    Run Code Online (Sandbox Code Playgroud)
  • /usr/bin/prename:另一个 perl 脚本,由 Robin Barker 编写,这是perl包的一部分:

    $ dpkg -S /usr/bin/prename
    perl: /usr/bin/prename
    
    Run Code Online (Sandbox Code Playgroud)
  • /usr/bin/file-rename:又一个 Perl 脚本,没有明确的作者信息,但提到了 Larry(大概是 Wall)和 Robin(大概是 Barker)。这个是由rename包安装的,也被符号链接到/usr/bin/rename

    $ dpkg -S /usr/bin/file-rename
    rename: /usr/bin/file-rename
    
    Run Code Online (Sandbox Code Playgroud)

我也有rename.ulfromutil-linux但让我们暂时忽略那个。这 3 个 Perl 脚本有什么区别?他们似乎都有相同的手册页man renameman file-rename并且man prename都给了我相同的页面。

我可以自己查看脚本并尝试了解它们之间的差异,但这并非微不足道,我希望有人会知道每个脚本具有哪些其他特性没有的特性。解释为什么 Debian 世界需要三个单独的 Perl 重命名脚本的奖励点。

Jef*_*ler 20

不确定这是否应该是评论,但这只是部分答案——Bug#735134: perl: rename(1) is Ancient

有什么似乎是混乱的种子。具体来说:

所以总结一下:多年来,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 <pkg-perl-maintainers@lists.alioth.debian.org>
Architecture: all
Replaces: libfile-rename-perl
Provides: libfile-rename-perl
Depends: perl
Conflicts: libfile-rename-perl
Description-en: Perl extension for renaming multiple files
Run Code Online (Sandbox Code Playgroud)

所以,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.