5 votes

Renommer plusieurs extensions de fichiers avec une seule commande

J'ai reçu quelques fichiers importants par mail. Il y a environ 150 fichiers comme ceux-ci. Les extensions des fichiers sont nommées zip1, zip2, zip3, zip_ etc. Je veux juste changer l'extension de ces fichiers en zip en utilisant une seule commande pour éviter la tâche manuelle de renommer chaque fichier.

4voto

heemayl Points 85741

Essayer:

rename 's/zip[^.]*$/zip/' /chemin/vers/le/dossier/contenant/les/fichiers/*

Exemple:

$ ls
bar.zip2  egg.zip4  foo.zip1  spam.zip3  test.zip_
$ rename 's/zip[^.]*$/zip/' *
$ ls
bar.zip  egg.zip  foo.zip  spam.zip  test.zip

4voto

karel Points 97032

Cette tâche de renommer plusieurs fichiers est facile à réaliser en utilisant pyRenamer à partir des dépôts Ubuntu par défaut dans Ubuntu 16.04 et antérieurs. La capture d'écran suivante explique comment faire :

entrez la description de l'image ici

Je sais que ce n'est pas la manière de le faire dans le terminal comme vous l'avez demandé, mais c'est une façon alternative de le faire que vous pourriez trouver plus facile car vous pouvez parcourir les fichiers à renommer dans la fenêtre de pyRenamer au lieu de taper le chemin.

Dans Ubuntu 18.04 et ultérieurs, pyRenamer a été remplacé par soit GPRename ou le package snap Smart File Renamer (sudo snap install smart-file-renamer).

2voto

αғsнιη Points 33236

Utilisez la commande mmv (Installez-la en utilisant sudo apt-get install mmv) :

mmv -n '*.zip*' '#1.zip'

Le premier * correspond à tout ce qui se trouve avant .zip et le deuxième * correspond à tout ce qui se trouve après .zip et ils deviennent des groupes de correspondances avec les renvois arrière #1 et #2 respectivement. Et nous ne gardons que le premier avec .zip à la fin.

Remarque : En utilisant l'option -n, la commande mmv s'exécute en mode sec, donc supprimez-la pour effectuer le renommage réel.


Ou en combinant les commandes find et mv :

find source/dir -type f -name '*.zip*' -exec sh -c 'echo mv "$1" "${1%.*}.zip"' sh_mv {} \;
  • le source/dir spécifie le chemin du répertoire source.
  • -type f recherche uniquement les fichiers.
  • -name '*.zip*' trouve les fichiers dont les noms ressemblent à '*.zip*'
  • {} représente le fichier actuel.
  • En "${1%.*}.zip", enlève l'extension du fichier et ajoute .zip au nom du fichier.
  • Ainsi, mv "$1" "${1%.*}.zip" renomme le fichier actuel en *.zip.

Remarque : Supprimez la commande echo une fois que vous êtes sûr du test à sec.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X