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 :

rechercher du texte dans une arborescence de fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut rechercher du texte dans une arborescence de fichier
    Bonjour,

    je voudrais rechercher un bout de texte dans une arborescence de dossiers et de fichiers.

    Après quelques recherches, je suis tombé sur cette commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -exec grep montexte {} \;
    mais ça ne marche pas.

    Quelqu'un à une solution ?

    Merci.

  2. #2
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bonjour,

    Si si, c'est bien la syntaxe correcte, sauf que: montexte ne doit pas avoir d'espace(s), ou alors il faut le mettre entre guillemets et que la sortie donne juste montexte, pas le nom du fichier dans lequel il est. Commande modifiée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -exec grep -q "mon texte" {} \; -print

  3. #3
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    Super, c'est ce qu'il me fallait.

    Merci.

  4. #4
    Membre Expert

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2004
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 060
    Par défaut
    Salut.

    Ceci n'aurait pas suffit ?

  5. #5
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    Effectivement la commande est beaucoup plus simple et marche aussi bien

    Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    xxxxx@xxxxx:~/nouveau dossier$ find . -exec grep -q "yop test" {} \; -print
    ./nouveau dossier/nouveau dossier 2/nouveau fichier
     
    xxxxx@xxxxx:~/nouveau dossier$ grep -r "yop test" *
    nouveau dossier/nouveau dossier 2/nouveau fichier:yop testfrf essai essai2

    La différence est qu'il affiche la ligne dans laquelle il a trouvé le grep.

    Y a-t-il une autre différence qui m'aurait échappée ?

  6. #6
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    Dans la première commande, tu utilises grep avec l'option -q. Cette option sert à lancer grep en mode quiet, ce qui permet de ne pas afficher les résultats du grep, mais uniquement de récupérer le code retour indiquant ou non le succès du grep. Au final, cette commande exécute un find sur ton dossier, pour chaque fichier, lance la commande grep, et n'affiche (à cause de l'option -print du find) que les fichier pour lesquels le grep trouve des lignes. L'affichage est donc en réalité dû à la commande find et non à grep, d'où le nom de fichier seul.

    Dans la seconde commande, c'est le résultat du grep classique qui est affiché. Or, par défaut, grep affiche la ligne où se trouve le texte cherché, tu peux empêcher cela avec l'option -l:
    Pour info, sur les machines ne disposant pas de l'option -r pour grep, on peut faire le même genre de recherche avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f | xargs grep "yop test"
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f | xargs grep -l "yop test"
    pour n'avoir que les noms de fichiers

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche de texte dans une variable
    Par Ninpa dans le forum VB.NET
    Réponses: 2
    Dernier message: 07/01/2010, 09h50
  2. [Toutes versions] Recherche des macros dans une arborescence de répertoires.
    Par vincph dans le forum Microsoft Office
    Réponses: 1
    Dernier message: 08/07/2009, 23h07
  3. Rechercher du texte dans une chaine
    Par Zanku dans le forum Windows
    Réponses: 2
    Dernier message: 12/01/2009, 17h13
  4. [vb-net] Recherche de texte dans une variable
    Par skaraa dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/09/2007, 16h48
  5. Recherche de texte dans une chaine de caractères
    Par julien20vt dans le forum Oracle
    Réponses: 7
    Dernier message: 19/12/2006, 10h02

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