Script shell

Résolu
aruju Messages postés 2219 Date d'inscription   Statut Contributeur Dernière intervention   -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

il me faudrait un script qui cherche une chaîne de caractères (y compris caractères spéciaux). je m'explique:

J'ai plusieurs répertoires avec plusieurs fichiers (.css .php .js .html) et je voudrais savoir par exemple dans quel fichier se trouve la chaîne : if (!$db->num_rows($result))

merci pour votre aide
--

L'expérience, c'est le nom que chacun donne à ses erreurs.
Oscar Wilde
Configuration: Linux Debian
Mozilla 1.8.1.10

14 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Tout simplement en mettant l'expression entre quotes simples :
    fich2.txt
    blalo
    blub
    blibli
    blobla
    blybluble
    
    fich3.txt
    blala
    blab
    blibli
    blabla
    blablabla
    
    fich.txt
    blala
    blab
    if (!$db->num_rows($result))
    blabla
    blablabla
    
    [tmpfs]$ grep -Hn 'if (!$db->num_rows($result))' fich*
    fich.txt:3:if (!$db->num_rows($result))
    
    [tmpfs]$
    ;-))
    0
  2. aruju Messages postés 2219 Date d'inscription   Statut Contributeur Dernière intervention   403
     
    merci jipicy, ta commande marche très bien (par contre je ne suis pas sur qu'elle cherche dans les sous répertoires) mais par exemple la commande
    grep -Hn 'if ($moderators)' * 

    ne marche pas..
    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,
    rgrep -Hn 'if (!$db->num_rows($result))'  /repertoire_parent
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      pffffff, se suis trop nul ;-((((

      Merci ;-))
      0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Ben chez moi elle marche bien :
    [tmpfs]$ cat fich2.txt
    blalo
    blub
    blibli
    bla if ($moderators) blu
    blobla
    blybluble
    
    [tmpfs]$ grep -Hn 'if ($moderators)' *
    fich2.txt:4:bla if ($moderators) blu
    
    [tmpfs]$
    Essaie de protéger le "$" avec un "\$"...

    Par contre pour la recherche récursive il te faudra passer par la commande "find" :
    find /répertoire -name "*" -exec grep -Hn 'if (!$db->num_rows($result))' {} \;
    ;-))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Par contre pour la recherche récursive il te faudra passer par la commande "find" :

    t'es fatigué ou quoi?! ;-))))
    man grep
    
    DESCRIPTION
           grep  recherche dans les FICHIERs indiqués les lignes correspondant à un certain MOTIF. Par défaut, grep affiche les lignes qui con-
           tiennent une correspondance au motif. L'entrée standard est lue si FICHIER est omis ou si FICHIER vaut « - ».
    
           Trois variantes du programme sont disponibles : egrep, fgrep et rgrep ; egrep est identique à grep -E, fgrep est identique à grep -F
           et rgrep est identique à grep -r.
    
    
    
           -R, -r, --recursive
                  Lire récursivement tous les fichiers à l'intérieur de chaque répertoire. C'est l'équivalent de l'option -d recurse.

    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Ben non, je joue au "perlien", la flemme de taper "man grep", c'est tout ;-DDD
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        ;-)
        0
  7. aruju Messages postés 2219 Date d'inscription   Statut Contributeur Dernière intervention   403
     
    voila l'extrait un des fihiers:
    if ($cur_forum['moderators'] != '')
    
    	{
    
    		$mods_array = unserialize($cur_forum['moderators']);
    
    		$moderators = array();
    
    
    
    		while (list($mod_username, $mod_id) = @each($mods_array))
    
    			$moderators[] = '<a href="profile.php?id='.$mod_id.'">'.pun_htmlspecialchars($mod_username).'</a>';
    
    
    
    		$moderators = "\t\t\t\t\t\t\t\t".'<p><em>('.$lang_common['Moderated by'].'</em> '.implode(', ', $moderators).')</p>'."\n";
    
    	}
    
    
    
    ?>


    La commande que j'utilise:
    find /home/aruju/Desktop/abc/ -name "*" -exec grep -Hn 'if ($moderators)' {} \;


    Puis ca ne marche pas.. (même avec l'antislache)

    P.S la commande de lami20j ne marche pas non plus

    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Eh dis donc ! et ça "if ($cur_forum['moderators'] != '')" c'est loin de ressembler à "if ($moderators)' !!!

    Pas compliqué que tu ne trouves rien ;-((
    0
  9. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    je ne vois pas le motif que tu cherches dans ton extrait
    0
  10. aruju Messages postés 2219 Date d'inscription   Statut Contributeur Dernière intervention   403
     
    ok ok ne me tapez pas :-) Et si par exemple je sais que dans la chaîne il y a "moderators" (plus tout les caractères spéciaux que je ne connais pas) et je veut qu'il me trouve tout les lignes contenant par exemple "$moderators" "<moderators" "['moderators" etc et ce dans tous les rep et sou rep

    EDIT et puisque c'est commença même pas je vais mettre "resolu" :-)
    0
  11. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    essaie
    rgrep -Hn '[^a-zA-Z]moderators' /repertoire_parent
    0
  12. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    ou plutôt
    rgrep -Hn ' [^a-zA-Z]moderators' /repertoire_parent

    mais ce n'est pas optimal
    0
  13. aruju Messages postés 2219 Date d'inscription   Statut Contributeur Dernière intervention   403
     
    ok merci ca marche ;-)
    0
  14. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    tu peux faire comme ça
    dans la partie en gras tu peux ajouter tous les caractères spéciaux, mais à la fin, surtout pas avant le - qui doit rester en 1ère position
     rgrep -EHn '([-$<>\[}{=;,#|]|])moderators' *

    0
  15. aruju Messages postés 2219 Date d'inscription   Statut Contributeur Dernière intervention   403
     
    niquel merci
    0