[SH] Combinaisons fichiers dans un dossier

Résolu
ZZ2F3 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -  
ZZ2F3 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aurais besoin de savoir comment faire pour réaliser 2 boucles imbriquées sur des fichiers contenus dans un dossier.

En plus clair (lol), j'aimerais en partant d'un dossier 'Essai' contenant Essai1, Essai2, Essai3, Essai4 pouvoir travailler sur les (4*3/2) 6combinaisons possibles {(Essai1,Essai2),(Essai1,Essai3),(Essai1,Essai4),(Essai2,Essai3),(Essai2,Essai4),(Essai3,Essai4)}

Rq : Les combinaisons sont en faites les paires possibles de ce fichiers, je ne prends pas les doublons et la paire (Essai2,Essai3) est identique à la paire (Essai3,Essai2)

Je sais comment réaliser une boucle sur les fichiers contenus dans un dossier [Merci Jipicy ;)] :
for fich in /home/Essai/*; do echo "fichier trouvé dans le répertoire Essai : " $fich; done

Seulement j'aimerais faire une double boucle du genre :

Pour chaque fichier i du dossier Essai Faire
    Pour chaque fichier ">i" du dossier Essai Faire
         Diverses choses =)
    Fait
Fait


J'espère avoir été assez clair et si ce n'est pas le cas n'hésitez pas à me demander des éclaircissements!

Merci par avance de votre précieuse aide!

Bonne fin de journée

R.
A voir également:

2 réponses

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

Je ne sais pas si j'ai bien tout compris, mais voilà un bout de code basé sur un tableau...
[tmpfs]$ tree
.
|-- Essai
|   |-- Essai1
|   |-- Essai2
|   |-- Essai3
|   `-- Essai4
`-- foo.sh

1 directory, 5 files

[tmpfs]$ cat foo.sh
#! /bin/bash

cd Essai
tableau=( $(ls *) )
count=${#tableau[@]}

for (( i=0; i<count; i++ ))
do
j=$i
while [ "$j" -lt "$((count-1))" ]
do
echo ${tableau[$i]},${tableau[$((j+1))]}
j=$((j+1))
done
done

[tmpfs]$ ./foo.sh
Essai1,Essai2
Essai1,Essai3
Essai1,Essai4
Essai2,Essai3
Essai2,Essai4
Essai3,Essai4

[tmpfs]$  
;-))
0
ZZ2F3 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
 
Merci c'est exactement ce que je cherchais et je ne connaissais pas les conditions d'utilisation!

Petit rajour que j'ai fait si cela peut servir à quelqu'un :
set tableau=`ls $Directory | grep -v '/'`
Cette commande permet de n'avoir que les fichiers contenus dans le dossier.

En tous cas [encore] Merci Jipicy!

Bonne journée

R.
0