Script bash qui va bien

Voila j’ai plein de répertoires avec plein de gifs dedans (tous dans un meme repertoire). J’aimerais renommer mes gifs comme ceci 0001.gif, 0002.gif, etc…

Vous sauriez pas quel script bash je pourrais faire pour faire ca?

Faut plutot un logiciel Toshop, mais ya deja un tread dessus (© Baphomet)

Et dans ce tread ya le nom d’un log qui fait ca…

Sous quel os ?

Sinon, je me serais bien arraché la tête à faire un (tout petit) one-line perl mais ça fait perpet’ que j’en n’ai pas fait…

Oui c’est ce que j’ai pensé au premier abord, mais comme beaucoup ont tendance à faire un abus de langage avec le mot bash.
Je demande histoire d’être sur, que je lui ponde pas un script bash si il a un windows

nan efectivement c bien pour du linux

[trolling mode activated]
et cygwin c’est pour les chiens ??

comme quoi : on peut faire du bash sous windows !

[trolling mode on standby]
(pfff… le lourd )

[quote][trolling mode activated]
et cygwin c’est pour les chiens ??

comme quoi : on peut faire du bash sous windows !

[trolling mode on standby]
(pfff… le lourd

En faisant un peu d’archéologie, j’ai retrouvé ça que j’ai écrit un jour :

#!/bin/bash
cpt=0

pattern=$1
extention=$2

for file in *
do
if [ “$file” == “$0” ]
then
true
elif [ -d “$file” ]
then
printf ‘%s is a directory
’ $file
else
newname=$pattern$cpt$extention
printf ‘Renaming %s to %s
’ $file $newname
mv $file $newname
let "cpt = $cpt + 1"
fi
done

Si je me souviens bien, faut le lancer comme ceci :

./massmv nomdebase extension

Et tu te retrouve avec des nomdebaseXextension

A modifier selon les besoins …

En version lisible par les humains, ça donne :

#!/bin/bash cpt=0 pattern=$1 extension=$2 for file in * do  if [ "$file" == "$0" ] then   true  elif [ -d "$file" ] then   printf '%s is a directory. ' $file  else   newname=$pattern$cpt$extension   printf 'Renaming %s to %s. ' $file $newname   mv $file $newname   let "cpt = $cpt + 1"  fi done
[i]Ce message a été édité par xentyr le 18/09/2003[/i]

Bon comme tout le monde y vas de son petit script, hop vite fait de tête:

#!/bin/bash

ZEROS=5;
COUNT=0;
for i in *.gif
do
mv $i printf %0${ZEROS}d $COUNT.gif;
let COUNT=$COUNT+1;
done
[/quote]
Tu peux juste changer la variable ZEROS pour le nombre de chiffre que tu veux genre 5 te fait des fichiers genre 00124.gif

Edit: Par contre si tu fait pas un copier/coller fait gaffe au sens des apostrophes

Ce message a été édité par Merlin le 18/09/2003

Wais … désolé pour le formattage

De toutes façons, le script de Merlin est mieux, oubliez le mien

Ouais moi aussi je veux jouer!

let j=0 ; for i in find . -name "*.gif"; do mv $i printf "%05d.gif " $j ; let j=$j+1 ; done

Ps: Attention aux anti-cote

Pour ceux qui sont sous Mozilla, rappelez-vous que vous entrez du HTML directement, donc pour aller à la ligne, faut taper ‘
’. Ensuite, pour entrer du code, vous pouvez utiliser ’ ‘

…Da Code…
’.

Donc westdigit, ça donne :

let j=0 ; for i in `find . -name "*.gif"`; do  mv $i `printf "%05d.gif " $j` ;  let j=$j+1 ; done[/quote]Sinon, c'est illisible. [img]style_emoticons/<#EMO_DIR#>/wink.gif[/img]

P.S.: De toute manière, c’est Merlin qui a gagné…
Ce message a été édité par xentyr le 18/09/2003