Script shell

Résolu/Fermé
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 - 9 févr. 2008 à 17:32
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 9 févr. 2008 à 18:56
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
A voir également:

14 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 févr. 2008 à 17:52
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
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
9 févr. 2008 à 17:59
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 18:07
Salut,
rgrep -Hn 'if (!$db->num_rows($result))'  /repertoire_parent
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 févr. 2008 à 18:08
pffffff, se suis trop nul ;-((((

Merci ;-))
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 févr. 2008 à 18:07
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 18:10
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 févr. 2008 à 18:13
Ben non, je joue au "perlien", la flemme de taper "man grep", c'est tout ;-DDD
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
9 févr. 2008 à 18:56
;-)
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
9 févr. 2008 à 18:16
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 févr. 2008 à 18:22
Eh dis donc ! et ça "if ($cur_forum['moderators'] != '')" c'est loin de ressembler à "if ($moderators)' !!!

Pas compliqué que tu ne trouves rien ;-((
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 18:23
je ne vois pas le motif que tu cherches dans ton extrait
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
9 févr. 2008 à 18:29
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 18:33
essaie
rgrep -Hn '[^a-zA-Z]moderators' /repertoire_parent
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 18:39
ou plutôt
rgrep -Hn ' [^a-zA-Z]moderators' /repertoire_parent

mais ce n'est pas optimal
0
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
9 févr. 2008 à 18:42
ok merci ca marche ;-)
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 18:43
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
aruju Messages postés 2214 Date d'inscription dimanche 29 octobre 2006 Statut Contributeur Dernière intervention 15 novembre 2014 403
9 févr. 2008 à 18:46
niquel merci
0