5 votes

Supprimer les n derniers caractères des noms de fichiers pour tous les fichiers d'un répertoire

Comment supprimer les 12 derniers caractères de tous les noms de fichiers d'un certain répertoire via Terminal ?

9voto

heemayl Points 85741

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.

3voto

Zanna Points 65764

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 ancien with 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 ()

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