[Shell] Traitement liste de fichiers

Résolu
yaLINUXNUL Messages postés 45 Statut Membre -  
yaLINUXNUL Messages postés 45 Statut Membre -
Bonjour,

J'ai cherché et je ne trouve pas comment faire. J'ai passé l'après midi à rechercher des solutions.

----- Dans une variable, j'ai une liste non fini de fichiers séparés par le caractère ','
var6=aa.pdf,bb.pdf,cc.pdf,aa.pdf,....
ou
var6=aa.pdf

----- Les fichiers qui ne sont pas en doublon sont distribués dans des répertoires du nom.

_______________

J'ai une solution mais elle permet de travailler sur une liste fixe et ensuite il faut que j'analyse les doublons.

var7=`echo $var6 | cut -d"," -f1`
var8=`echo $var6 | cut -d"," -f2`
var9=`echo $var6 | cut -d"," -f3`
echo $var7
echo $var8
echo $var9

_______________

Y a t il une solution pour

1) supprimer les doublons (option)

2) Lancer la distribution pour chaque fichier de la liste qu'elle que soit le nombre de fichier dans la liste
du genre

for i in liste
do
if [$i eg aa.pdf]
then
{
mv $i /home/sortie1/$i
}
else
{
if [$i eg aa.pdf]
then
{
mv $i /home/sortie2/$i
}
fi
fi
done

Merci de bien vouloir m'aider

cordialement
Configuration: Windows XP vmware linux
Internet Explorer 7.0

3 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    J'ai pas très bien compris ce que tu voulais faire exactement ;-\

    Quoi qu'il en soit, je te donne des pistes avec ce que j'ai cru comprendre...

    Transformer ta variable en tableau
    $ var6="aa.pdf,bb.pdf,cc.pdf,aa.pdf"
    $ declare -a var6=( ${var6//,/ } )
    
    Afficher les éléments du tableau
    $ echo ${var6[@]}
    aa.pdf bb.pdf cc.pdf aa.pdf
    
    Afficher le 1er élément du tabeau
    $ echo ${var6[0]}
    aa.pdf
    
    Le 2nd
    $ echo ${var6[1]}
    bb.pdf
    
    Le 3ème
    $ echo ${var6[2]}
    cc.pdf
    
    Le 4ème
    $ echo ${var6[3]}
    aa.pdf
    
    Nombre d'élements du tableau
    $ echo ${#var6[@]}
    4
    
    Afficher les éléments du tableau triés par ordre alphabétique
    $ for i in ${var6[*]}; do echo $i;done | sort
    aa.pdf
    aa.pdf
    bb.pdf
    cc.pdf
    
    Idem mais en cas de doublon n'en afficher qu'un
    $ for i in ${var6[*]}; do echo $i;done | sort -u
    aa.pdf
    bb.pdf
    cc.pdf
    
    Idem mais en excluant les doublons
    $  for i in ${var6[*]}; do echo $i;done | sort | uniq -u
    bb.pdf
    cc.pdf
    $ 
    ;-))
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Re-

    La nuit portant conseil, on va faire beaucoup plus simple... à toi de mettre le traitement qui va bien (notamment une condition "case...esac") à la place du "echo" :
    while read line; do echo "fichier : $line"; done < <(echo $var6 | tr ',' '\n' | sort -u)
    ;-))
    0
    1. yaLINUXNUL Messages postés 45 Statut Membre 1
       
      Merci énormément.
      Je vais me faire un dossier avec les réponses
      0
  3. yaLINUXNUL Messages postés 45 Statut Membre 1
     
    C'est bon de ne pas se sentir seul.
    0