Renommer par lot

Bonjour,

Après avoir parcouru les forum sans vraiment trouver ce que je veux, je pose donc la question.

Comment renommer une série de fichier dont on ne connait forcément le nom de départ.
En une série de nom numérote de 0 à ~ en fonction de son heure de création (pour que ces fichier soit numéroter dans l’ordre), suis-je clair ?

ceci étant directement lié avec mon autre sujet http://forum.debian-fr.org/viewtopic.php?f=3&t=26263

Merci

que veux-tu dire par ~ ? L’infini?
Sinon ton problème doit pouvoir se traiter ainsi:

  1. la commande ls -t * te classe les fichiers du plus récent au plus vieux.
  2. ensuite, rename ou mv sont assez sympas pour renommer.
  3. un for pour mettre la glue et ça devrait marcher.

compteur = 1 ; for file in `ls -t` ; incrémenter le compteur ; mv $file $compteur-$file

Pour la partie incrémenter le compteur, je te laisse chercher. C’est crade, chiant et pas beau de mémoire.

Maintenant si ton but c’est qu’en faisant ls * tu obtiens les fichiers bien dans l’ordre bein tu vas être emmerdé vu qu’il faut renommer non pas en préfixant par 1 2 3 4 5 … 10 … 123321 mais plutôt en préfixant par 000001 000002 … 000010 … 123321 (en supposant que tu as 123321 fichiers). Là c’est vraiment plus chiant, un script peut le faire! :slightly_smiling:

Si ça peut aider:

for arg
do
if [ -d “$arg” ]; then
zenity --info --text=""$arg" … est un repertoire \n … EXIT" && exit
elif [ -f “$arg” ]; then
# définit l’indentation
i=$(($i+1))
# identifie l’extension du fichier
ext=ls "$arg" | cat | cut -d. -f2
# identifie la date
date=stat -c %y "$arg" | awk -F: '{print $1""$2""$3}'| cut -c1-10
# identifie l’heure au format hhmmss
heure=stat -c %y "$arg" | awk -F: '{print $1""$2""$3}'| cut -c12-17
# renomme
mv -f “$arg” $date-$heure-$i.$ext
else exit
fi
done
zenity --info --text=“Renommage … OK”