[Toulibre] trie photos

Sylvain sylvain-liste at marliere.org
Sam 26 Jan 19:01:52 CET 2013


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



Plus d'informations sur la liste de diffusion Toulouse-ll