URL: https://linuxfr.org/forums/programmation-shell/posts/comparaison-de-2-fichiers-dont-un-de-reference Title: Comparaison de 2 fichiers dont un de référence Authors: kevin066 Date: 2020年08月16日T12:41:55+02:00 License: CC By-SA Tags: Score: -1 Bonjour, J'ai besoin de comparer deux fichiers FILE1 et FILE2 sur un serveur SERVER1, dit de référence, dans lesquels se trouvent deux arborescences à comparer. FILE1 contient l'arborescence de référence : Voici FILE 1 (à droite la taille) : rep1 4096 rep1/fichier4.sh 375 rep1/fichier6.sh 551 rep1/fichier9.sh 332 rep1/rep11 4096 rep1/rep11/fichier1.sh 239 rep1/rep11/tutu.sh 19 Et FILE2 (en fait il contient l'arborescence concernée sur un second serveur), j'ai créé FILE2 sur le serveur de référence et je compare les deux fichiers : rep2 4096 rep2/fichier4.sh 375 rep2/fichier6.sh 644 rep2/fichier9.sh 332 rep2/rep11 4096 rep2/rep11/fichier1.sh 239 rep2/rep11/rep22 4096 rep2/rep11/fichier.new.sh 6 Du fait que les bons fichiers sont dans FILE1, je souhaite faire remonter que : 1°) rep1/fichier6.sh doit avoir comme taille 551 (ou plus simplement rep1/fichier6.sh : 551) 2°) rep1/rep11/tutu.sh est dans la référence mais pas dans FILE2 3°) en revanche fichier.new.sh n'existe pas dans FILE1 donc on s'en moque, pas d'alerte le concernant. En fait : - tout ce qui est différent dans FILE1 par rapport à FILE2 doit remonter (c'est FILE1 la référence). - tout ce qui existe dans FILE1 mais pas dans FILE2 doit remonter aussi. J'ai tenté un sdiff mais c'est pas vraiment exploitable à grande échelle et pas bien lisible. SERVER1:~ kevin$ sdiff -s FILE1 FILE2 rep2 4096 | rep1 4096 rep2/fichier4.sh 375 | rep1/fichier4.sh 375 rep2/fichier6.sh 644 | rep1/fichier6.sh 551 rep2/fichier9.sh 332 | rep1/fichier9.sh 332 rep2/rep11 4096 | rep1/rep11 4096 rep2/rep11/fichier1.sh 239 | rep1/rep11/fichier1.sh 239 rep2/rep11/rep22 4096 | rep1/rep11/tutu.sh 19 rep2/rep11/fichier.new.sh 6 < Si j'arrivais à trouver une commande (ou un petit script) qui me donne quelque chose de beaucoup plus simple, genre : rep1/fichier6.sh : taille 551 rep1/rep11/tutu.sh : n'existe pas sur mon serveur client Si je ne tiens pas compte des chemins complet (avec un basename ) j'ai trouvé ceci : awk 'NR==FNR {t[0ドル]++; next} !t[0ドル]' FILE2 FILE1 mais il faudrait que le chemin entier soir puis en compte.... ... ce serait vraiment bien. Un de vous a t-il une idée ? Merci beaucoup.