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 :

comparer deux répertoires sous linux


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut comparer deux répertoires sous linux
    j'ai 2 repertoires rep1 et rep2.J'aimerais afficher la liste des fichiers de rep1 qui ne se trouvent pas dans rep2.Et si possible copier ces nouveaux fichiers du rep1 vers rep2
    je pensais a la syntaxe diff rep1/ rep2/.
    Mais je crois que c'est pas bon.
    si vous avez une idée
    merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    for f in rep1/*; do if [ -f "$f" -a ! -f "rep2/${f##*/}" ]; then echo "cp $f rep2/${f##*/}"; fi; done
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    for f in rep1/*; do if [ -f "$f" -a ! -f "rep2/${f##*/}" ]; then echo "cp $f rep2/${f##*/}"; fi; done
    ...
    ?
    c'est top ca marche !
    j'ai enlevé echo
    Citation Envoyé par N_BaH Voir le message
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    for f in rep1/*; do if [ -f "$f" -a ! -f "rep2/${f##*/}" ]; then cp $f rep2/${f##*/}; fi; done
    ...
    ?
    il ya 2 trucs que j'ai pas compris
    -a !
    et
    ${f##*/}
    en tout cas bravo pour ta rapidité

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    help test
    [...]
        Other operators:
     
          -o OPTION      True if the shell option OPTION is enabled.
          ! EXPR         True if expr is false.
          EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.
          EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.
    [...]
    et pour ${f##*/} regarde le man bash, à Remplacement des paramètres Parameter Expansion en anglais)
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    désolé de te repondre si tard n_bah car je cherchais à comprendre
    ${f##*/}
    .
    j'ai trouvé un lien expliquant celà
    http://man.developpez.com/man1/bash.1.php#L25
    mais franchement j'ai vraiment un peu de mal à comprendre
    je ne comprends rien à cette explication
    ${paramètre##mot}
    Le mot est développé pour fournir un motif, comme dans l'expansion des noms de fichiers. Si le motif correspond au début de la valeur du paramètre, alors le développement prend la valeur du paramètre après suppression du plus petit motif commun (cas ``#''), ou du plus long motif (cas ``##''). Si le paramètre est @ ou *, l'opération de suppression de motif est appliquée à chaque paramètre positionnel successivement, et le développement donne la liste finale. Si le paramètre est une variable tableau indexée par @ ou *, l'opération de suppression de motif est appliquée à chaque membre du tableau successivement, et le développement donne la liste finale.
    ${paramètre%mot}
    faut me pardonner car je suis un vrai débutant

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    dans la forme ${paramètre##mot}, cela efface tout jusqu'au dernier mot (y compris le mot);
    alors que ${paramètre#mot}, efface tout jusqu'au premier mot (y compris le mot)
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var="foo bar baz foo bar baz"
    echo "${var##*bar}"
    baz
    echo "${var#*bar}"
    baz foo bar baz
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Lister les images d'un répertoire sous Linux
    Par NLS le pingouin dans le forum C++
    Réponses: 2
    Dernier message: 10/04/2011, 11h55
  2. Nombre de fichier maximum par répertoire sous Linux et Windows
    Par juju034 dans le forum Administration système
    Réponses: 4
    Dernier message: 30/06/2008, 16h22
  3. Fichiers et répertoires sous linux : c'est quoi ./ et ~/ ?
    Par iDaaX dans le forum Mandriva / Mageia
    Réponses: 3
    Dernier message: 13/11/2007, 13h50
  4. connecter deux pc sous linux
    Par momeftah dans le forum Réseau
    Réponses: 4
    Dernier message: 14/04/2007, 10h48
  5. Réponses: 5
    Dernier message: 06/03/2003, 13h27

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