Forum général.général Recherche de motifs

Posté par  .
Étiquettes : aucune
0
5
avr.
2007
Bonjour,

Je cherche une commande bash bien pratique qui permet de faire une recherche de motifs dans plusieurs fichiers. Exemple : J'ai une application php (PHPWebGallery... - un peu de pub au passage-), sur laquelle je travaille. Je cherche parmi tout les fichiers ".php', l'endroit ou est défini la variable $page.

Solution 1 :
$ grep "$page" *.php

Mais cette solution ne me convient pas tellement car il me semble qu'il y en a d'autres. (dont une qui me convenait)
  • # pourtant c'est la plus efficace

    Posté par  . Évalué à 1.

    je ne connais rien de mieux que le
    grep "$page" *.php

    pour chercher un motif dans un nombre indefini de fichier.
  • # Exhaustivité...

    Posté par  . Évalué à 3.

    Ta commande n'est pas exhaustive. Elle recherchera dans les fichiers php de ton répertoire courant.
    Pour être sur d'être exhaustif, je ferai un find . -iname "*.php" | xargs grep "$page".
    Au delà de ça, grep est LA commande unix pour rechercher un pattern dans des fichiers donc je pense que tu trouveras difficilement mieux.
    • [^] # Re: Exhaustivité...

      Posté par  . Évalué à 1.

      Tout à fait.

      Par contre, il est préférable d'échapper le "$", sinon -selon le shell-, "$page" peut être substitué.

      Dans le cas où certains noms de fichiers ont un espace, on peut utiliser le caractère NUL au lieu d'un espace pour la sortie de "find" et on indique à "xargs" que NUL est le séparateur avec l'option "-0". (attention, ceci valable pour les commandes GNU, ça n'est pas valable sur tous les Unix)

      find . -iname "*.php" -print0 | xargs -0 grep "\$page"

      ou

      find . -iname "*.php" -print0 | xargs -0 grep '$page'


      --
      unk
    • [^] # Re: Exhaustivité...

      Posté par  . Évalué à 0.

      Voilà ! c'est exactement ce que je cherchais. 1000 merci.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.