Script shell [Résolu/Fermé]

Signaler
Messages postés
2219
Date d'inscription
dimanche 29 octobre 2006
Statut
Contributeur
Dernière intervention
15 novembre 2014
-
lami20j
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
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

14 réponses

Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 665
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]$
;-))
Messages postés
2219
Date d'inscription
dimanche 29 octobre 2006
Statut
Contributeur
Dernière intervention
15 novembre 2014
388
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..
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 426
Salut,
rgrep -Hn 'if (!$db->num_rows($result))'  /repertoire_parent
jipicy
Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 665
pffffff, se suis trop nul ;-((((

Merci ;-))
Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 665
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))' {} \;
;-))
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 426
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.

jipicy
Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 665
Ben non, je joue au "perlien", la flemme de taper "man grep", c'est tout ;-DDD
lami20j
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 426 > jipicy
Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019

;-)
Messages postés
2219
Date d'inscription
dimanche 29 octobre 2006
Statut
Contributeur
Dernière intervention
15 novembre 2014
388
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

Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 665
Eh dis donc ! et ça "if ($cur_forum['moderators'] != '')" c'est loin de ressembler à "if ($moderators)' !!!

Pas compliqué que tu ne trouves rien ;-((
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 426
je ne vois pas le motif que tu cherches dans ton extrait
Messages postés
2219
Date d'inscription
dimanche 29 octobre 2006
Statut
Contributeur
Dernière intervention
15 novembre 2014
388
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" :-)
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 426
essaie
rgrep -Hn '[^a-zA-Z]moderators' /repertoire_parent
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 426
ou plutôt
rgrep -Hn ' [^a-zA-Z]moderators' /repertoire_parent

mais ce n'est pas optimal
Messages postés
2219
Date d'inscription
dimanche 29 octobre 2006
Statut
Contributeur
Dernière intervention
15 novembre 2014
388
ok merci ca marche ;-)
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 426
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' *

Messages postés
2219
Date d'inscription
dimanche 29 octobre 2006
Statut
Contributeur
Dernière intervention
15 novembre 2014
388
niquel merci