Comment puis-je supprimer les 12 derniers caractères des noms de fichiers de tous les fichiers d'un répertoire donné via Terminal?
Utilisation de l’expansion du paramètre bash
:
for i in ?????????????*; do echo mv -i "$i" "${i%????????????}"; done
supprimez echo
pour l'action réelle. Recherchez le même nom de fichier de sortie pour plusieurs fichiers source.
Vous pouvez également utiliser un modèle de remplacement d’extension de paramètre:
for i in ?????????????*; do echo mv -i "$i" "${i/????????????}"; done
En utilisant rename
(prename
), à partir de ce répertoire:
rename -n 's/.{12}$//' *
Ceci renommera tous les fichiers et répertoires, si vous voulez le faire uniquement pour les fichiers:
find . -maxdepth 1 -type f -name '?????????????*' -exec rename -n 's/.{12}$//' {} +
Ceci fonctionnera à sec, supprimez -n
pour l'action réelle:
find . -maxdepth 1 -type f -name '?????????????*' -exec rename 's/.{12}$//' {} +
Là encore, cela pourrait provoquer une situation critique, assurez-vous de bien vérifier la sortie du fonctionnement à sec.
Vous pouvez utiliser rename
. Depuis l'intérieur du répertoire:
rename -n 's/(.*).{12}/$1/' *
Supprimez -n
après le test pour renommer les fichiers. Remplacez {12}
par {whatever number of characters you want to delete from the end of the name}
s/old/new/' replace
oldwith
new`(.*)
enregistrer n'importe quel nombre de caractères ....{12}
les douze derniers caractères, quels qu'ils soient$1
les caractères enregistrés avec ()