Double boucle Bash

Résolu/Fermé
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 - 24 avril 2009 à 12:20
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 - 24 avril 2009 à 14:30
Bonjour,

Voilà j'ai deux fichier toto.txt et titi.txt.
Ces deux fichiers contiennent la même liste de fichiers sauf que dans titi.txt j'ai changer l'extention du fichier.

REP="/home/maillon/Outils/rep/"
find $REP -type f -name "*.txt" -exec ls {} \; > txt.list
cp txt.list txt2.list

sed -i "s/\.txt/-home\.txt/g" txt2.list

Maintenant ce que je voudrais faire c'est parcourir mon fichier txt.list pour afficher :
"La ligne /home/maillon/Outils/rep/blala.txt est égal à la ligne /home/maillon/Outils/rep/blala-home.txt"

Donc au début je pensais faire quelque chose comme :
while read line
do
while read line2
do
"La ligne $line est égal à la ligne $line2"
done < titi.txt
done < toto.txt

Seulemenent ça marche pas parce qu'il parcours tout mon fichier titi.txt

Est-ce que quelqu'un aurait une idée ? Je ne pense pas que se soit compliquer mais j'y arrive pas.

Merci beaucoup.

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 895
24 avril 2009 à 13:18
Salut,

Je n'arrive pas à comprendre la finalité de la chose, d'autant plus que tu ne fais aucun test de comparaison ;-\

Si le but est d'afficher les 2 fichiers côte-à-côte il y a la commande "paste" qui le fait très bien ;-)
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
24 avril 2009 à 13:43
En fait je m'étais peut-être mal exprimer.

Je lancais une comande dedans j'avais besoin du nom du fichier courant et du nom du fichier modifier.

J'ai trouver un truc qui marche mais peut etre optimiser :
while read line
do
echo $line > temp.list
sed -i "s/\.txt/-home\.txt/" temp.list
tmp=`cat temp.list`
echo $line " -> " $tmp
Commande $tmp $line
done < txt.list

J'espère que ça pourra aider quelqu'un.

Cordialement,
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 895
24 avril 2009 à 13:52
On ne sait toujours pas l'intérêt de la manœuvre ! ;-(

Quant à :
echo $line > temp.list
sed -i "s/\.txt/-home\.txt/" temp.list 
Il serait plus simple de faire :
echo ${line/\.txt/-home\.txt} > temp.list
;-))
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
24 avril 2009 à 14:30
Ui en fait désolé j'ai oublié de le dire :-)
C'est pour faire de la minification de fichier (avec une appli java yuicompressor) vu que je voulais pas supprimer les fichiers existants. Je devais passer en paramètre le nouveau nom de fichier et le nom actuel du fichier.

En tout cas merci pour ta commande c'est vrai c'est plus optimisé.

J'espère avoir été clair :-)

Cordialement,
0