Ada apa dengan semua nama: prename, rename, file-rename?

24

Pada sistem Debian saya (well, sistem LMDE saya, tetapi cukup dekat), saya memiliki setidaknya 3 renameprogram berbeda :

  • /usr/local/bin/rename: Ini adalah skrip Perl, yang ditulis oleh Tom Christiansen. Anehnya, saya tidak dapat menemukan paket mana yang menginstalnya:

    $ dpkg -S /usr/local/bin/rename 
    dpkg-query: no path found matching pattern /usr/local/bin/rename
  • /usr/bin/prename: skrip perl lain, yang ditulis oleh Robin Barker, ini adalah bagian dari perlpaket:

    $ dpkg -S /usr/bin/prename
    perl: /usr/bin/prename
  • /usr/bin/file-rename: skrip Perl yang lain, tidak ada informasi kepengarangan yang jelas tetapi Larry (mungkin Tembok) dan Robin (mungkin Barker) disebutkan. Yang ini diinstal oleh renamepaket dan juga terhubung ke /usr/bin/rename:

    $ dpkg -S /usr/bin/file-rename
    rename: /usr/bin/file-rename

Saya juga sudah rename.uldari util-linuxtetapi mari kita abaikan itu untuk saat ini. Apa perbedaan antara 3 skrip Perl ini? Mereka semua tampaknya memiliki halaman manual yang sama man rename,, man file-renamedan man prenamesemua memberi saya halaman yang sama.

Saya bisa membaca sendiri skripnya dan mencoba memahami perbedaannya tetapi itu tidak sepele dan saya berharap seseorang akan tahu fitur apa yang dimiliki masing-masing dan yang lainnya tidak. Poin bonus untuk menjelaskan mengapa dunia Debian membutuhkan tiga skrip rename Perl yang terpisah.

terdon
sumber
Lebih buruk dari itu! RHEL mengirimkan biner yang sama sekali berbeda sebagai bagian dari util-linux-ngpaket mereka . % file = ganti nama / usr / bin / ganti nama: ELF 64-bit LSB yang dapat dieksekusi, x86-64, versi 1 (SYSV), ...
thrig
@ thrig Saya mengubah jawaban Anda menjadi komentar karena sebenarnya tidak menjawab pertanyaan (apa perbedaan antara skrip ini dan mengapa ada begitu banyak versi perl). Anda sedang berbicara tentang renamedari util-linuxyang rename.ulpada Debian dan renamepada sistem RedHat. Saya menyebutkannya di paragraf kedua dari belakang pertanyaan saya.
terdon
apa yang update-alternatives --display renamediperlihatkan untukmu? Ingin tahu apakah itu bagian dari alternatif pasca-instal.
Jeff Schaller
@JeffSchaller tidak, itu berasal dari Unicode :: Tussle . Penulisnya (tchrist) aktif di SE dan dia menjelaskannya kepada saya dalam obrolan.
terdon
4
Terkait . Sebagai catatan, skrip ganti nama dengan nama saya yang Anda sebutkan mendukung beberapa opsi yang berguna bagi saya, seperti menulis ulang target symlink alih-alih nama path yang tepat, membaca daftar nama file dari pipa, dan nama path yang diakhiri null dalam daftar itu - ditambah " normal ” -vdan -iopsi. Ini adalah skrip lama, lama, lama tanpa dokumentasi yang tepat di luar pesan penggunaannya, tapi ini adalah pekerja keras standar untuk penulisan ulang nama file secara massal . Itu salah satu dari dua atau tiga skrip yang selalu saya inginkan bersama saya ke mana pun saya pergi.
tchrist

Jawaban:

16

Tidak yakin apakah ini harus berupa komentar, tapi itu hanya sebagian jawaban -

http://lists.alioth.debian.org/pipermail/perl-maintainers/2014-February/004113.html

memiliki apa yang tampaknya menjadi benih kekacauan. Secara khusus:

Jadi untuk meringkas: selama bertahun-tahun paket perl telah menyediakan / usr / bin / rename, utilitas stanalone diimplementasikan dalam perl. Masalahnya adalah kita tidak ingin menyediakan utilitas dari paket perl lagi karena sudah ditambahkan secara lokal di dalam debian / dan tidak sedang dipertahankan. Versi yang dipertahankan tersedia sebagai paket terpisah, libfile-rename-perl.

Yang libfile-rename-perldisebutkan di atas sekarang diganti oleh 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

Jadi, Perl memiliki sendiri renameyang tidak dikelola oleh Debian dan menyediakan /usr/bin/prename. Debian devs memelihara sebuah renamepaket (tampaknya sebelumnya dikenal sebagai libfile-rename-perl) yang merupakan paket yang menyediakan /usr/bin/rename: symlink /etc/alternatives/renameyang dengan sendirinya merupakan symlink ke /usr/bin/file-renameskrip.

Script Tom Christiansen dibundel dengan Unicode::Tusslemodul Perl . Anda mungkin telah menginstalnya dan itulah yang disediakan /usr/local/bin/rename.

Jeff Schaller
sumber