Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/03/2011, 14h39   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2004
Messages : 35
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 35
Points : 11
Points : 11
Par défaut Comparaison et diff de répertoires

Bonjour tout le monde.
Débutant en script, je cherche à automatiser une petite tache.

J'ai deux répertoires au même niveau.
Je voudrais comparer le contenu de ces deux dernier.

Dans un premier temps, je voudrais vérifier que les fichiers qui sont dans le rep1 existe bien dans le rep2. Sinon, faudrait logger la différence dans un fichier.
Dans un second temps, pour les fichiers qui exsitent dans rep1 et rep2, effectuer un diff et générer un fichier de diff par par fichier.

Merci d'avance de vos retour et suggestions.

Bonne journée à tous
clad523 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/03/2011, 07h20   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
il va falloit faire une petite procédure pour ça


Code :
for i in <repertoire_modele>/* ; do echo "==== $i ====" ;  if [ -f <repertoire_a_verifier>/$(basename $i) ] ; then diff $i <repertoire_a_verifier>/$(basename $i) ; else echo <repertoire_a_verifier>/$(basename $i)" n'existe pas "; fi ; done  >  fichier_de_resultat

par exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
francois@trillian:/tmp$ mkdir aa ; mkdir bb
francois@trillian:/tmp$ echo totoutu > bb/a
totoutu
francois@trillian:/tmp$ echo tutu > bb/b
tutu
francois@trillian:/tmp$ echo toto > aa/a
toto
francois@trillian:/tmp$ echo toto > aa/c


francois@trillian:/tmp$ ls -lrt aa/ bb/
bb/:
total 8
-rw------- 1 francois francois 5 24 mars  07:11 b
-rw------- 1 francois francois 8 24 mars  07:12 a

aa/:
total 8
-rw------- 1 francois francois 5 24 mars  07:06 a
-rw------- 1 francois francois 5 24 mars  07:17 c
francois@trillian:/tmp$ 
francois@trillian:/tmp$ for i in aa/* ; do if [ -f bb/$(basename $i) ] ; then diff $i bb/$(basename $i) ; else echo bb/$(basename $i)" n'existe pas"; fi ; done
1c1
< toto
---
> totoutu
bb/c n'existe pas
francois@trillian:/tmp$ rm -rf aa/ ; rm -rf bb/
comme ça tu compares les fichier qui ont le même nom dans aa/ et dans bb/
si un fichier dans aa/ n'existe pas dans bb/ ça l'indique aussi

le reste à faire c'est que de la mise en page pour rendre le fichier resultat lisible même si il y a 100 fichiers à traiter.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 11h03   #3
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 464
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 464
Points : 9 585
Points : 9 585
Bonjour,

La plupart des versions de diff que je connais fonctionnent tres bien sur des repertoires, et te listent dans ce cas les fichiers presents uniquement dans l'un des repertoires.

N'est-ce pas le cas chez toi ?
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/04/2011, 12h34   #4
Membre du Club
 
Inscription : septembre 2008
Messages : 37
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2008
Messages : 37
Points : 47
Points : 47
aas tu testé si la commande dircmp ne repondrait pas a une partie de tes besoins?
qqcvd est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h42.


 
 
 
 
Partenaires

Hébergement Web