2 votes

J'ai besoin de renommer tous les fichiers image dans un répertoire et de les nommer avec le nom du dossier dans lequel ils se trouvent.

Je dois renommer tous les fichiers image dans un répertoire, et les nommer comme le dossier dans lequel ils se trouvent... Est-ce possible en utilisant un script Bash?

Je dois aussi les numéroter (0001.jpg, 0002.jpg, 0003.jpg, etc...) de manière consécutive. Le problème que j'ai c'est qu'il y a des sauts entre les numéros.. (0018.jpg, 0019.jpg, 0025.jpg, 0026.jpg, etc...) J'aimerais renommer le 0025.jpg en 0020.jpg et le 0026.jpg en 0021.jpg, etc...

0voto

Oui, c'est possible. Vous pouvez utiliser find /search/path -type d pour trouver tous les dossiers et utiliser l'option -exec pour exécuter certaines actions avec le chemin du répertoire comme paramètre. Et vous pouvez avoir un script bash qui exécute NUM=0; for file in /path/to/folder/*.jpg; do mv file NUM.jpg; let "NUM=NUM+1"; done; ou quelque chose comme ça

0voto

Tyler Regas Points 41

Pour utiliser cette commande, vous devez être dans le répertoire où se trouvent les fichiers .jpg ou vous devez personnaliser un peu la commande.

 let a=0; for i in *.jpg; do let a=a+1; b=`basename $PWD`; c=`printf %04d$b.jpg $a`; mv $i $c; done

La sortie ressemblera à ceci :

0001.jpg

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