มีอะไรกับการเปลี่ยนชื่อทั้งหมด: prename เปลี่ยนชื่อเปลี่ยนชื่อไฟล์?


24

ในระบบ Debian ของฉัน (ก็คือระบบ LMDE ของฉัน แต่ใกล้พอ) ฉันมีrenameโปรแกรมที่แตกต่างกันอย่างน้อย 3 โปรแกรม:

  • /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 สามชุดแยกกัน


มันแย่กว่านั้น! RHEL จัดส่งไบนารีที่แตกต่างอย่างสิ้นเชิงโดยเป็นส่วนหนึ่งของutil-linux-ngแพ็คเกจ แฟ้ม% = เปลี่ยนชื่อ / usr / bin / เปลี่ยนชื่อ: เอลฟ์ 64 บิต LSB ปฏิบัติการ x86-64, รุ่นที่ 1 (SYSV) ...
thrig

@thrig ฉันแปลงคำตอบของคุณเป็นความคิดเห็นเนื่องจากมันไม่ได้ตอบคำถามจริง ๆ (ความแตกต่างระหว่างสคริปต์เหล่านี้และทำไมจึงมีรุ่น Perl จำนวนมาก) คุณกำลังพูดถึงrenameจากutil-linuxซึ่งเป็นrename.ulใน Debian และrenameบนระบบ RedHat ฉันพูดถึงในย่อหน้าสุดท้ายของคำถามของฉัน
terdon

อะไรที่update-alternatives --display renameแสดงให้คุณเห็น? สงสัยว่าเป็นส่วนหนึ่งของทางเลือกหลังการติดตั้งหรือไม่
Jeff Schaller

@JeffSchaller ไม่ก็มาจากUnicode :: การแย่งชิง ผู้เขียน (tchrist) มีการใช้งานใน SE และเขาอธิบายให้ฉันในการแชท
terdon

4
ที่เกี่ยวข้อง สำหรับเร็กคอร์ดสคริปต์การเปลี่ยนชื่อด้วยชื่อของฉันที่คุณพูดถึงนั้นสนับสนุนตัวเลือกที่เป็นประโยชน์สำหรับฉันเช่นการเขียนเป้าหมาย symlink แทนชื่อพา ธ ที่เหมาะสมการอ่านรายชื่อไฟล์จากไพพ์และชื่อพา ธ สิ้นสุดโมฆะในรายการนั้น ปกติ” -vและ-iตัวเลือก มันเป็นสคริปต์เก่าเก่าและเก่าที่ไม่มีเอกสารประกอบที่เหมาะสมนอกข้อความการใช้งาน แต่เป็นวิธีการมาตรฐานสำหรับการเขียนชื่อไฟล์แบบเต็มจำนวน มันเป็นหนึ่งในสคริปต์สองหรือสามบทที่ฉันต้องการเสมอกับฉันไม่ว่าฉันจะไปที่ไหน
tchrist

คำตอบ:


16

ไม่แน่ใจว่าควรเป็นความคิดเห็นหรือไม่ แต่เป็นเพียงคำตอบบางส่วน -

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

มีสิ่งที่ดูเหมือนจะเป็นเมล็ดของความยุ่งเหยิง โดยเฉพาะ:

ดังนั้นเพื่อสรุป: เป็นเวลาหลายปีแพคเกจ Perl ได้ให้ / usr / bin / เปลี่ยนชื่อยูทิลิตี้แบบ stanalone ดำเนินการใน perl ปัญหาคือเราไม่ต้องการให้ยูทิลิตี้จากแพคเกจ perl อีกต่อไปเพราะมันถูกเพิ่มเข้ามาภายในเดเบียน / และไม่ได้รับการบำรุงรักษา เวอร์ชันที่บำรุงรักษาพร้อมใช้งานเป็นแพ็กเกจแยกต่างหาก 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และให้ Devian Debian รักษาrenameแพ็คเกจ (ซึ่งก่อนหน้านี้รู้จักกันในชื่อlibfile-rename-perl) ซึ่งเป็นแพ็คเกจที่ให้/usr/bin/rename: symlink /etc/alternatives/renameซึ่งตัวมันเองคือ symlink ของ/usr/bin/file-renameสคริปต์

สคริปต์ของ Tom Christiansen นั้นมาพร้อมกับUnicode::Tussleโมดูลของ Perl คุณอาจจะติดตั้งมันและนั่นคือสิ่งที่ให้/usr/local/bin/renameไว้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.