recherche avec GREP
tablier
Membre
@muqaddar -> on ne sait jamais ou mettre ce type de post!!
Je souhaite recherche un pattern dans tous les fichier d'un dossier. j'ai essayé plusieurs variations de lignes de commande du genre
Donc il y a quelque chose que je n'ai pas compris dans le man de grep!!
Comment dois-je écrire ma demande?
Je souhaite recherche un pattern dans tous les fichier d'un dossier. j'ai essayé plusieurs variations de lignes de commande du genre
la seule chose que j'obtiens est : grep: warning: recursive search of stdingrep --recursive -e "le_pattern" --file=chemin_du_dossier
Donc il y a quelque chose que je n'ai pas compris dans le man de grep!!
Comment dois-je écrire ma demande?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
[tt]
cd $HOME
ls -Rl | grep -e "Doc"
[/tt]
Ou
[tt]
grep --recursive -e "Doc" $HOME
[/tt]
On peut mettre le chemin que l'on veut à la place de $HOME
Si on prend le man grep, grep [options] [-e PATTERN | -f FILE] [FILE...], le FILE sans -f est prioritaire (le dernier), sinon il prend sur l'entrée standard je pense, l'option --file (-f pareil) c'est pour obtenir le pattern à partir d'un fichier (d'où le ou logique).
exp:
grep -r test ./*
A+JYT
ça marche, mon erreur principale est l'oubli de /* en fin du chemin!
Merci à vous.
Si tu veux rechercher "toto" dans le dossier "tata" récursivement, c'est "grep -re toto tata" et pas "grep -re toto --file=tata" !
Car là avec [tt]grep --recursive -e "le_pattern" --file=chemin[/tt] tu lui demandes de chercher à la fois le pattern "le_pattern" ET aussi tous les patterns qu'il va trouver en lisant le fichier "chemin", et faire cette recherche récursivement dans... bah tu n'as pas indiquer dans quoi, donc par défaut il suppose que c'est dans stdin ! (Or faire une recherche recursive dans stdin ça n'a pas de sens, d'où le warning !)
Et à priori pas besoin du "/*" en fin de chemin si tu mets le flag "-r" (ou "--recursive")