[Shell] Traitement liste de fichiers

Résolu/Fermé
yaLINUXNUL Messages postés 45 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 25 avril 2008 - 31 mars 2008 à 21:15
yaLINUXNUL Messages postés 45 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 25 avril 2008 - 1 avril 2008 à 10:31
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

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
31 mars 2008 à 23:46
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
1 avril 2008 à 09:28
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
yaLINUXNUL Messages postés 45 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 25 avril 2008
1 avril 2008 à 10:30
Merci énormément.
Je vais me faire un dossier avec les réponses
0
yaLINUXNUL Messages postés 45 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 25 avril 2008
1 avril 2008 à 10:31
C'est bon de ne pas se sentir seul.
0