web-dev-qa-db-fra.com

Quelle est la différence entre les différentes commandes "renommer"?

Depuis Ubuntu 14.04, il y a au moins trois commandes rename:

  1. rename fourni par le package util-linux, voir man rename.ul
  2. rename fourni par le package Perl, voir man prename
  3. rename fourni par le package rename, voir man file-rename

Des questions:

  • Quelles sont exactement les différences entre ces commandes?
  • Comment se fait-il qu'il y ait plusieurs paquets fournissant différentes commandes utilisant le même nom - je suppose que ce n'est pas un accident ou n'est-ce pas?
  • Ne serait-il pas assez simple que le package Perl inclue la commande "complète" rename ou n'inclue aucune commande rename? Pourquoi cette scission apparemment incomplète est-elle maintenue jusqu'à au moins Ubuntu 17.04?

Cette question a déjà été posée sur U & L (comme je l'ai découvert plus tard):
Que font tous les renames: prename, renommer, renommer un fichier?

13
dessert

Comment se fait-il qu'il y ait deux paquets fournissant des commandes différentes utilisant le même nom (si ce n'est par accident)?

Ce n'est pas inhabituel. Les auteurs choisissent généralement le nom de commande le plus simple auquel ils pensent. Ainsi, si deux personnes écrivent une commande pour renommer des fichiers, il est probable qu'elles la nommeront toutes les deux rename. C'est l'une des raisons du système Alternatives à Debian - qui permet aux paquetages proposant des commandes de même nom de coexister et permettant le remplacement d'un paquet par un autre. Par exemple, il existe plusieurs implémentations AWK - mawk, original-awk, gawk (bien qu'ils se désignent tous eux-mêmes comme awk). Avec le système alternatif, vous pouvez tous les installer en même temps et basculer facilement entre eux en tant que valeur par défaut awk.

Dans ce cas particulier, prename provient du code source Perl. Les responsables de paquet Debian avaient à l'origine rename soit celui de Perl, puis sont passés au système de remplacement, afin de prendre en charge le rename de util-linux. Ensuite, quelqu'un a écrit une version améliorée de rename de Perl dans le module File-Rename Perl , qui a ensuite été ajouté comme alternative. Mais ce n'est même pas le seul module Perl permettant de renommer des fichiers.

Ne serait-il pas assez simple que le paquetage Perl inclue la commande "complète" rename ou n'inclue aucune commande rename? Pourquoi cette scission apparemment incomplète est-elle maintenue jusqu'à au moins Ubuntu 17.04?

Voir le bogue Debian n ° 735134 pour connaître l'évolution de cette situation. Les responsables de Debian préfèrent généralement utiliser au moins une version pour faire quelque chose de radical, comme remplacer une commande fonctionnelle par une autre. prename a été gardé pour Jessie, et a maintenant été remplacé par Buster. De plus, il semble que rename ne fasse plus partie du système alternatif, car rename.ul est trop incompatible. rename sera juste file-rename.

Comme Ubuntu prend généralement en compte les modifications d’emballage dans Debian, ce qui arrive à rename dans Debian sera repris par Ubuntu tôt ou tard, probablement vers 18.04. Il semble être trop tard pour 17h10.

Quelles sont exactement les différences entre ces commandes?

Fondamentalement, prename et file-rename exécutent des expressions Perl pour renommer les fichiers. file-rename est juste maintenu activement et supporte plus d'options. rename de util-linux fonctionne de manière totalement différente, a ses propres règles pour les motifs.

8
muru