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

Shell et commandes GNU Discussion :

Utilisation de grep


Sujet :

Shell et commandes GNU

  1. #21
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par chardclo Voir le message
    Bonjour,

    Juste pour le "fun" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find / -type f  \( -exec /usr/bin/printf "%s : " {} \; -exec grep -q '/usr/lib64/extensions/no-debug-non-zts-20060613/ssh2\.so' {} \; -exec /usr/bin/printf "ok\n" \; -o -exec /usr/bin/printf "ko\n" \; \)
    Arf. Je sens ici la petit pointe du professionnel qui voulait se rattraper d'avoir raté les pipes dans sa commande précédente
    Ok, ta commande est excellente et montre bien ta maitrise totale du find et des groupements de commande shell
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  2. #22
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Bonjour à tous,

    A Sve@r :

    find / -type f -print 2>/dev/null |while read f
    do
    echo "scanning $f"
    grep -l "/usr/lib64/extensions/no-debug-non-zts-20060613/ssh2.so" "$f" && echo "trouvé dans $f"
    done
    Merci pour ce bout de code. Je viens de le tester. Effectivement les lignes défilent...
    Après, je suis comme un gros âne : je ne sais pas remonter en haut de la console, ce qui fait que je n'ai que les dernières lignes.
    Pourrait-on rajouter une instruction du genre :

    if(trouve){
    stop;
    }

    Et aussi : que dois-je écrire si je veux éviter certains répertoires ?
    Merci d'avance, et désolé de mon ignorance crasse.

  3. #23
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 44
    Points : 146
    Points
    146
    Par défaut
    Citation Envoyé par Sve@r
    Arf. Je sens ici la petit pointe du professionnel qui voulait se rattraper d'avoir raté les pipes dans sa commande précédente
    ben pas vraiment...mais je comprends que cela peut être interprété comme cela.

    Citation Envoyé par Sve@r
    Ok, ta commande est excellente et montre bien ta maitrise totale du find et des groupements de commande shell
    hummm...
    si mon post précédant est assimilable à de "l’arrogance", j'en suis désolé...
    ce n'était pas intentionnel et encore moins dans mes habitudes

  4. #24
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 44
    Points : 146
    Points
    146
    Par défaut
    Citation Envoyé par renaud26 Voir le message
    Pourrait-on rajouter une instruction du genre :

    if(trouve){
    stop;
    }
    Il faut "paginer" l'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    find / -type f -print 2>/dev/null |while read f 
    do 
      echo "scanning $f" 
      grep -l "/usr/lib64/extensions/no-debug-non-zts-20060613/ssh2.so" "$f" && echo "trouvé dans $f" 
    done|more

  5. #25
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Merci !
    Donc à chaque fois que la page de la console est pleine, je fais entrée, pour faire "more"...
    Bon et bien rendez-vous ici en 2065.
    Je dois m'y prendre mal, et ne pas faire ce qu'il faut pour identifier ce fichier.

    Pourtant, tous les matins, je reçois ces maudits emails me disant qu'un fichier appelle ssh2.so avec un mauvais chemin...


  6. #26
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 44
    Points : 146
    Points
    146
    Par défaut
    à ta place, je redirigerai le résultat vers un fichier que je consulterai de temps à autre plutôt que de consulter l'affichage ...

  7. #27
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par renaud26 Voir le message
    Merci !
    Donc à chaque fois que la page de la console est pleine, je fais entrée, pour faire "more"...
    Bon et bien rendez-vous ici en 2065.
    Je dois m'y prendre mal, et ne pas faire ce qu'il faut pour identifier ce fichier.

    Pourtant, tous les matins, je reçois ces maudits emails me disant qu'un fichier appelle ssh2.so avec un mauvais chemin...

    non tu peux rediriger le tout dans un fichier et le consulter
    c'est plus simple que d'attendre la retraite pour avoir le temps de tapper à chaque fois sur page_suivante du "more"

  8. #28
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Toi t'es un Charclo malin ! Un super Charclo ! Un Supertramp !
    Bref, un pro.
    En ce qui me concerne, dans ce domaine "shell", je suis à zéro.

    J'ai tapoté dans Google et faire cette manip serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    find / -type f -print 2>/dev/null |while read f 
    do 
      echo "scanning $f" 
      grep -l "/usr/lib64/extensions/no-debug-non-zts-20060613/ssh2.so" "$f" && echo "trouvé dans $f" 
    done resultats.txt
    Humm...m'étonnerait que ce soit aussi simple que ça...



    [EDIT]
    Ca a l'air de fonctionner avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    done > /test/resultats.txt
    Merci à tous pour toute cette aide précieuse, c'est vraiment cool.

  9. #29
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Bonjour à tous,

    Je reviens à la pêche aux conseils :
    Ma recherche bute toujours sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grep: /proc/sysrq-trigger: Invalid argument
    Alors ma question est : dans l'instruction que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    find / -type f -print 2>/dev/null |while read f 
    do 
      echo "scanning $f" 
      grep -l "/usr/lib64/extensions/no-debug-non-zts-20060613/ssh2.so" "$f" && echo "trouvé dans $f" 
    done > test/resultats.txt
    Où et comment je peux écrire que je ne veux pas scanner /proc ?
    Et dans le cas où je veux en éviter plusieurs, comment j'écris les noms, avec quels séparateurs, guillemets...
    Merci encore pour vos lumières.

  10. #30
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Re-

    Pour un répertoire à éluder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find / \( -name proc -prune \) -o \( -type f -print \) 2>/dev/null | while read f ...

    Pour deux répertoires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find / \( -name proc -o -name dev \) -prune -o \( -type f -print \) 2>/dev/null | while read f ...
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  11. #31
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Bonsoir, et Merci à toi.
    Je teste ça de suite !

  12. #32
    Membre habitué Avatar de Levi59
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 58
    Points : 148
    Points
    148
    Par défaut
    grep permet aussi d'exclure certains patterns :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ~$ man grep
    ...
           --exclude=GLOB
                  Skip   files  whose  base  name  matches  GLOB  (using  wildcard
                  matching).  A file-name  glob  can  use  *,  ?,  and  [...]   as
                  wildcards,  and  \  to  quote  a wildcard or backslash character
                  literally.
     
           --exclude-from=FILE
                  Skip files whose base name matches any of  the  file-name  globs
                  read  from  FILE  (using  wildcard  matching  as described under
                  --exclude).
     
           --exclude-dir=DIR
                  Exclude directories matching  the  pattern  DIR  from  recursive
                  searches.
    ...
    Carpe Diem

Discussions similaires

  1. Utilisation de grep -v
    Par chtorrel dans le forum AIX
    Réponses: 4
    Dernier message: 09/07/2008, 14h08
  2. [debutant] utilisation de grep
    Par john stedd dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 17/11/2007, 11h14
  3. utiliser commande grep
    Par salim81 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 01/07/2007, 21h52
  4. Problème avec l'utilisation de grep
    Par fgalves dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 07/11/2006, 23h49
  5. Utilisation de grep
    Par julien.63 dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 07/08/2006, 17h46

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