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 -
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
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
-
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]$
;-))
-
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.. -
Salut,
rgrep -Hn 'if (!$db->num_rows($result))' /repertoire_parent
-
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))' {} \;;-))
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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.
-
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
-
Eh dis donc ! et ça "if ($cur_forum['moderators'] != '')" c'est loin de ressembler à "if ($moderators)' !!!
Pas compliqué que tu ne trouves rien ;-((
-
je ne vois pas le motif que tu cherches dans ton extrait
-
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" :-) -
essaie
rgrep -Hn '[^a-zA-Z]moderators' /repertoire_parent
-
ou plutôt
rgrep -Hn ' [^a-zA-Z]moderators' /repertoire_parent
mais ce n'est pas optimal -
ok merci ca marche ;-)
-
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 positionrgrep -EHn '([-$<>\[}{=;,#|]|])moderators' *
-
niquel merci