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.
Réponses
Trop de publicités?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 :
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
).
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.