Renuméroter en série [RESOLU][Shell] - Shell/Batch - Programmation
Marsh Posté le 26-09-2011 à 15:56:45
La question n'est pas claire.
Il faut renommer image_022.jpg en img_0.jpg ?
Ou bien renommer image_022.jpg en img_22.jpg ?
Je vais supposer que c'est la deuxième hypothèse (et que c'est de l'Unix).
Pour récupérer 022, il faudrait découper la chaine de caractère du nom.
Peut-être qu'on peut supposer que le numéro se trouve toujours en position 7 à 10.
Donc on pourrait écrire le shell suivant :
ls -1 image*.jpg | while read old_name |
Marsh Posté le 26-09-2011 à 16:17:36
Désolée, mais la première hypothèse était la bonne!
Je serais partie de image_000.jpg sinon^^
Il faut donc faire un -22 quelque part, je n'ai pas à m'inquiéter d'avoir un numéro négatif car j'ai supprimé les 21 premières images qui ne me servaient pas.
Sinon, oui, c'est bien de l'Unix
Marsh Posté le 26-09-2011 à 16:25:46
Alors, c'est encore plus simple. Il n'y a pas besoin d'extraire le numéro.
Le programme devient :
num_img=0 |
N.B. ls liste les fichiers par ordre alphabétique par défaut, donc les fichiers devraient être numérotés dans le bon ordre, sans se soucier de faire un moins vingt-deux.
Marsh Posté le 26-09-2011 à 12:09:25
Bonjour,
J'ai un lot d'images de cette forme :
image_022.jpg
image_023.jpg
...
Je voudrais avoir ceci :
img_0.jpg
img_1.jpg
J'arrive à renommer image en img (pas très compliqué, en même temps...) mais je ne sais pas comment faire l'opération -22, ni comment supprimer le 0 dans 022, d'autant plus qu'il n'y est pas tout le temps : image_200.jpg
Ce que j'ai fait :
for i in image_*; do mv $i img_${i#image_};done
Si je fais :
for i in image_*; do mv $i img_${i#image_-22};done
ça me donne :
img_image_022.jpg
en clair il n'aime pas du tout ce qu'il y a dans les accolades!
Si quelqu'un pouvait m'aider...
Message édité par berilia le 26-09-2011 à 16:52:16