Comment supprimer les 12 derniers caractères de tous les noms de fichiers d'un certain répertoire via Terminal ?
Réponses
Trop de publicités?Utilisation bash
l'expansion des paramètres :
for i in ?????????????*; do echo mv -i "$i" "${i%????????????}"; done
supprimer echo
pour une action concrète. Vérifier que le nom du fichier de sortie est le même pour plusieurs fichiers sources.
Vous pouvez également utiliser le modèle de remplacement de l'expansion des paramètres :
for i in ?????????????*; do echo mv -i "$i" "${i/????????????}"; done
Utilisation rename
( prename
), à partir de ce répertoire :
rename -n 's/.{12}$//' *
Cela renommera tous les fichiers et répertoires, si vous souhaitez ne renommer que les fichiers :
find . -maxdepth 1 -type f -name '?????????????*' -exec rename -n 's/.{12}$//' {} +
Cela permet de faire fonctionner à sec, d'enlever -n
pour une action concrète :
find . -maxdepth 1 -type f -name '?????????????*' -exec rename 's/.{12}$//' {} +
Une fois de plus, cela pourrait entraîner une condition de course, assurez-vous de vérifier soigneusement la sortie de l'exécution à sec.
Vous pouvez utiliser rename
. Depuis l'intérieur du répertoire :
rename -n 's/(.*).{12}/$1/' *
Retirer -n
après avoir testé de renommer les fichiers. Remplacer {12}
mit {whatever number of characters you want to delete from the end of the name}
Explication
s/old/new/' replace
ancienwith
nouveau`(.*)
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()