Что со всеми переименованиями: prename, rename, file-rename?

24

В моей системе Debian (хорошо, в моей системе LMDE, но достаточно близко) у меня есть по крайней мере 3 разные renameпрограммы:

  • /usr/local/bin/renameЭто сценарий Perl, написанный Томом Кристиансеном. Как ни странно, я не могу найти, какой пакет установил его:

    $ dpkg -S /usr/local/bin/rename 
    dpkg-query: no path found matching pattern /usr/local/bin/rename
    
  • /usr/bin/prename: еще один скрипт на Perl, написанный Робином Баркером, он входит в perlпакет:

    $ dpkg -S /usr/bin/prename
    perl: /usr/bin/prename
    
  • /usr/bin/file-rename: еще один сценарий Perl, нет четкой информации об авторстве, но упоминаются и Ларри (предположительно Уолл) и Робин (предположительно Баркер). Этот 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пакета. % file = переименовать / usr / bin / rename: исполняемый 64-битный LSB ELF, x86-64, версия 1 (SYSV), ...
августа
@ thrig Я преобразовал ваш ответ в комментарий, так как он на самом деле не отвечал на вопрос (в чем разница между этими сценариями и почему существует так много версий perl). Вы говорите о renameиз util-linuxкоторых находится rename.ulна Debian и renameна системах RedHat. Я упоминаю об этом в предпоследнем абзаце моего вопроса.
Тердон
что update-alternatives --display renameпоказывает для вас? Хотите знать, если это часть альтернативы после установки.
Джефф Шаллер
@JeffSchaller нет, это от Unicode :: Tussle . Его автор (tchrist) активен на SE, и он объяснил мне это в чате.
Тердон
4
Относящиеся . Напомним, что сценарий переименования с моим именем на нем, о котором вы упомянули, поддерживает некоторые полезные для меня опции, такие как перезапись целей символьных ссылок вместо собственно путей, чтение списка имен файлов из каналов и нулевые пути в этом списке - плюс « нормальный » -vи -iварианты. Это старый, старый, старый скрипт без надлежащей документации за пределами его сообщения об использовании, но это стандартная рабочая лошадка для массовых перезаписываний имен файлов. Это один из двух или трех сценариев, которые я всегда хочу со мной, независимо от того, куда я иду.
tchrist

Ответы:

16

Не уверен, что это должен быть комментарий, но это только частичный ответ -

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

имеет то, что кажется семенами беспорядка. В частности:

Итак, подведем итог: на протяжении многих лет пакет perl предоставлял / usr / bin / rename, утилиту stanalone, реализованную в 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скрипт.

Сценарий Тома Кристиансена связан с Unicode::Tussleмодулем Perl . Вы, вероятно, установили его, и вот что предоставлено /usr/local/bin/rename.

Джефф Шаллер
источник