IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

exclure un fichier de la commande diff


Sujet :

Linux

  1. #1
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut exclure un fichier de la commande diff
    Bonjour,
    j'utilise la commande diff sur deux répertoires pour creer un parth. Ces répertoires contiennent du code source C, fichiers H etc. J'utilise le paramètre -x pour exclure les fichier que je ne veux pas dans le patch (fichier bak, ~ etc).

    Mon problème est que j'ai deux fichier qui on le même nom (Makefile) dans des sous répertoires différents et je voudrais que diff ne regarde que l'un de ces deux fichiers.

    Avez vous une idée ?

    Merci,
    Cdlt,
    Tex

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 042
    Points
    31 042
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Tex-Twil Voir le message
    Mon problème est que j'ai deux fichier qui on le même nom (Makefile) dans des sous répertoires différents et je voudrais que diff ne regarde que l'un de ces deux fichiers.
    Deux fichiers de même nom ne peuvent pas se trouver dans le même répertoire.
    Deux fichiers nommés "Makefile" situés dans deux répertoires différents ("rep1" et "rep2") n'ont donc pas le même nom => l'un se nomme "rep1/Makefile" et l'autre se nomme "rep2/Makefile"...

  3. #3
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    Salut,
    C'est ce que pensait également mais quand j'exclue le fichier rep1/Makefile cela n'a pas d'effet. Les deux fichiers Makefiles sont dans le patch.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 042
    Points
    31 042
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Tex-Twil Voir le message
    Salut,
    C'est ce que pensait également mais quand j'exclue le fichier rep1/Makefile cela n'a pas d'effet. Les deux fichiers Makefiles sont dans le patch.
    D'accord. tu as deux répertoires
    rep1 qui contient "a, e, i et Makefile" et rep2 qui contient "a, e, i et Makefile" et tu veux que ton diff compare
    rep1/a avec rep2/a
    rep1/e avec rep2/e
    rep1/i avec rep2/i
    mais pas rep1/Makefile avec rep2/Makefile c'est ça ou j'ai pas encore compris ???

    Ensuite tu veux que "diff" ne regarde que l'un des deux Makefile => ok mais avec quoi diff va-t-il comparer ce fichier ???

    Perso je n'ai jamais utilisé diff sur des répertoires parce que la notion de "comparer deux répertoires" engendre trop de questions => va-t-on comparer les fichiers un à un, que se passe-t-il si un des fichiers n'es pas dans l'autre etc et j'ai pas envie de me lancer dans une batterie de tests pour voir comment diff résoud ces divers problèmes. Maintenant ma politique sur Unix est simple => si une entrée n'a pas ce qu'il faut, je m'arrange pour la mettre au carat avec les outils de traitement (sed, cut etc) pour que mon algo de traitement soit le plus universel possible (il pourra traiter ainsi toutes les entrées correspondantes au modèle). Idem si la sortie de mon traitement n'est pas parfait (parce que j'avais un cas particulier en entrée) => au lieu de me casser la tête sur le cas particulier, je préfère refiltrer la sortie avec un grep, un cut ou autre.
    Donc si tu as dans rep1 un fichier que tu ne veux pas faire traiter par le diff, et si le diff ne sait pas qu'il ne doit pas traiter ce fichier, alors arrange-toi pour que le diff ne voit pas ce fichier. Au lieu de lui passer le vrai répertoire ben passe-lui un répertoire "modifié". Ou alors au pire recrée toi-même ton propre algo de comparaison de répertoires à base de "boucle" sur chaque fichier qui t'intéresse dans le répertoire que tu compareras via un diff tout simple avec les fichiers situées dans l'autre répertoire. Bref, si les outils ne te conviennent pas recrée tes propres outils...

  5. #5
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    Salut,
    j'ai du mal m'exprimer. J'ai les repertoires rep1 rep2 contenant dont la structure est la suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    main.c
    Makefile
    sousrep/batman.c
    sousrep/robin.c
    sousrep/Makefile
    Je veux comparer tous les fichiers un à un sauf le Makefile qui est à la racine. La comparaison de répertoires récursive ne devrait pas poser problème:
    http://www.network-theory.co.uk/docs...rectories.html

    Il y a surement une autre méthode comme tu dis mais je voulais demander avant de chercher une autre possibilité. Je vais faire un 1er diff en excluant tous les Makefile et un deuxieme qui sera ciblé que sur les Makefile qui je veux et l'ajouter à mon 1er patch.

    Merci.

  6. #6
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Citation Envoyé par Tex-Twil Voir le message
    J'utilise le paramètre -x pour exclure les fichier que je ne veux pas dans le patch (fichier bak, ~ etc).
    Et en mettant un chemin absolu pour ton (tes) Makefile à la racine ?
    Exemple tes deux répertoires à differ sont old et new:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diff -x old/Makefile -x new/Makefile -r  old/ new/

  7. #7
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par D[r]eadLock Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diff -x old/Makefile -x new/Makefile -r  old/ new/
    Justement, ca n'a pas l'air de marcher.

Discussions similaires

  1. La commande DIFF
    Par jeff37 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 24/09/2007, 14h42
  2. Executer un fichier .bat sur commande Démarrer/Arrêter
    Par loïc.rio dans le forum Windows
    Réponses: 5
    Dernier message: 10/05/2006, 16h18
  3. Utilisation de la commande diff
    Par Phaf dans le forum Linux
    Réponses: 3
    Dernier message: 04/04/2006, 09h42
  4. Réponses: 1
    Dernier message: 27/10/2005, 10h15
  5. Decompresser un fichier .zip en command prompt cmd
    Par dighou dans le forum Windows
    Réponses: 4
    Dernier message: 23/06/2005, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo