В чем разница между различными командами переименования?

13

Начиная с Ubuntu 14.04, есть как минимум три renameкоманды:

  1. renameпредоставляется util-linuxпакетом, см. man rename.ul
  2. renameпредоставляется perlпакетом, см. имя человека
  3. renameпредоставляется renameпакетом, см. man file-rename

Вопросов:

  • Какие именно различия между этими командами?
  • Как получилось, что несколько пакетов предоставляют разные команды с одним и тем же именем - я полагаю, это не случайность, или это так?
  • Разве не было бы достаточно просто, чтобы perlпакет включал «полную» renameкоманду или вообще не включал какую-либо renameкоманду? Почему этот, казалось бы, неполный раскол сохранился как минимум до Ubuntu 17.04?

Этот вопрос уже задавался в U & L (как я узнал позже):
что со всеми переименованиями: prename, rename, file-rename?

Десерт
источник

Ответы:

8

Почему два пакета предоставляют разные команды под одним и тем же именем (если не случайно)?

Это не необычно. Авторы обычно выбирают самое простое имя команды, о котором они думают, поэтому, если два человека напишут команду для переименования файлов, вероятно, они оба назовут ее rename. Это одна из причин, лежащих в основе системы Альтернатив Debian - она ​​позволяет пакетам, предоставляющим команды с одинаковыми именами, сосуществовать и заменять один пакет другим. Например, существует множество реализаций AWK - mawk, original-awk, gawk(хотя все они относятся к себе , как AWK). С системой альтернатив вы можете установить их все одновременно и удобно переключаться между ними по умолчанию awk.

В этом конкретном случае prenameисходит из исходного кода Perl. Первоначально сопровождающие пакетов Debian изначально были renamePerl, а затем переключились на альтернативную систему, чтобы приспособить их renameот util-linux. Затем кто-то написал улучшенную версию Perl renameв модуле File-Rename Perl , который был добавлен в качестве другой альтернативы. Но это даже не единственный Perl-модуль для переименования файлов.

Разве не было бы достаточно просто, чтобы perlпакет включал «полную» renameкоманду или вообще не включал какую-либо renameкоманду? Почему этот, казалось бы, неполный раскол сохранился как минимум до Ubuntu 17.04?

Смотрите Debian bug # 735134, чтобы узнать, как развивалась эта ситуация. Сопровождающие Debian обычно предпочитают делать хотя бы один выпуск, когда делают что-то радикальное, например, заменяют рабочую команду другой. prenameбыл сохранен для Джесси, и теперь был удален для бастера. Кроме того, похоже rename, больше не будет под альтернативной системы, так rename.ulкак он слишком несовместим. renameбудет просто file-rename.

Поскольку Ubuntu обычно принимает изменения пакетов в Debian, то, что происходит renameв Debian, рано или поздно будет обнаружено Ubuntu, вероятно, в 18.04. Кажется, уже слишком поздно 17.10.

Какие именно различия между этими командами?

По сути, оба prenameи file-renameзапустить выражения Perl для переименования файлов. file-renameпросто активно поддерживается и поддерживает больше опций. renameИз util-linuxпроизведений совершенно иначе, есть свои правила для шаблонов.

Мур
источник
По состоянию man prenameна 17.10 , похоже, что 17.10 на самом деле взяли file-renameвместо prename. То же самое для 18.04 .
wjandrea