Bonsoir momo,

Le petit script ci-dessous trie les fichiers d'un répertoire aléatoirement puis leur ajoute un numéro croissant:

#!/bin/sh
if [ $# -lt 1 ] || [ ! -d $1 ]; then echo "Usage: `basename $0` dossier" ; exit ; fi
cpt=1
for file in `ls $1 | shuf` ; do
  mv $1/${file} $1/${cpt}_${file}
  cpt=`echo $cpt+1 | bc`
done

On peut améliorer en rajoutant des zéros de padding pour aligner à droite les numéros croissants:

#!/bin/sh
if [ $# -lt 1 ] || [ ! -d $1 ]; then echo "Usage: `basename $0` dossier" ; exit ; fi
cpt=1
cptmax=`ls $1 | wc -l`
for file in `ls $1 | shuf` ; do
  nb=`echo ${#cptmax}-${#cpt} | bc`
  zeros=""
  while [ $nb -gt 0 ] ; do
    zeros=$zeros"0"
    nb=`echo nb-1 | bc`
  done
  mv $1/${file} $1/${zeros}${cpt}_${file}
  cpt=`echo $cpt+1 | bc`
done

Si le dossier passé en argument contient les fichiers:
  file1.txt
  file2.mp3
  file3.odt
ils sont renommés par exemple:
  1_file3.odt
  2_file1.txt
  3_file2.mp3


-Sylvain


On 25/01/2013 17:56, jdd wrote:

for I in *.jpg ; do
ran=-$RANDOM ;
rename -- "." "$ran." $I
done

là j'ajoute une valeur random au nom de fichier pour empécher les robots
de deviner trop facilement les noms. C'est facile de mettre le $ran en
début de nom pour avoir le tri, je fais ca pour un cadre photo

jdd
_______________________________________________
Toulouse-ll mailing list
Toulouse-ll@toulibre.org
http://toulibre.org/cgi-bin/mailman/listinfo/toulouse-ll

Répondre à