所有重命名是什麼:prename、rename、file-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
/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 重命名腳本的加分項。
不確定這是否應該是評論,但這只是部分答案——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
.