Debian

所有重命名是什麼:prename、rename、file-rename?

  • January 21, 2022

在我的 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 重命名腳本的加分項。

不確定這是否應該是評論,但這只是部分答案——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

因此,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.

引用自:https://unix.stackexchange.com/questions/229230