Script shell

Résolu
aruju Messages postés 2214 Date d'inscription   Statut Contributeur Dernière intervention   -  
lami20j Messages postés 21331 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
A voir également:

14 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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   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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,
rgrep -Hn 'if (!$db->num_rows($result))'  /repertoire_parent
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
pffffff, se suis trop nul ;-((((

Merci ;-))
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
;-)
0
aruju Messages postés 2214 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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
je ne vois pas le motif que tu cherches dans ton extrait
0
aruju Messages postés 2214 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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
essaie
rgrep -Hn '[^a-zA-Z]moderators' /repertoire_parent
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Contributeur Dernière intervention   403
 
ok merci ca marche ;-)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Contributeur Dernière intervention   403
 
niquel merci
0