Linux : find & grep [Résolu/Fermé]

Signaler
-
 Gavroche -
Bonjour,

il faut a la question suivante en utilisant grep et find :
affichier les noms de fichiers qui contient le mot "premier" a partir de votre dossier "home"

j'aii essayé avec : find ~ -name * -print -exec grep "premier"

mais j'arrive que a afficher les lignes ... comment faire pour afficher le nom de fichier ?

9 réponses

Messages postés
8214
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
462
Bonjour,

celle-ci devrait le faire aussi :

find . -type f -name "*.php" -exec grep -il 'pattern' {} \;



ou bien celle-ci :

find . -name "*.php" -print0 | xargs -0 egrep pattern


^ ^
27
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 61779 internautes nous ont dit merci ce mois-ci

Messages postés
1
Date d'inscription
mardi 23 novembre 2010
Statut
Membre
Dernière intervention
23 novembre 2010
6
-n, --line-number print line number with output lines
-R, -r, --recursive equivalent to --directories=recurse

Un petit exemple :

Je recherche le mot alonso dans le répertoire /home/tetsumaki/allons-y

alonso ce trouve sur la ligne 2 du fichier /home/tetsumaki/allons-y/test.h
sur la ligne 5 du fichier /home/tetsumaki/allons-y/test/test2.h

Recherche dans le répertoire :

[tetsumaki@tetsu-arch ~]$ grep -rn "alonso" "/home/tetsumaki/allons-y/" 
/home/tetsumaki/allons-y/test.h:2:alonso 
/home/tetsumaki/allons-y/test/test2.h:5:alonso


Ou si je me trouve dans le répertoire dans lequel je veux rechercher :

[tetsumaki@tetsu-arch allons-y]$ cd ~/allons-y/ 
[tetsumaki@tetsu-arch allons-y]$ grep -rn "alonso" . 
./test.h:2:alonso 
./test/test2.h:5:alonso


Si je veux rechercher que sur les fichiers ayant l'extension ".h" :

[tetsumaki@tetsu-arch allons-y]$ grep -rn --include="*.h" "alonso" "/home/tetsumaki/allons-y/" 
/home/tetsumaki/allons-y/test.h:2:alonso 
/home/tetsumaki/allons-y/test/test2.h:5:alonso
Bonjour, je cherche à rechercher une chaine précise dans des fichiers php, sur mon serveur
J'ai tenté de nombreuses syntaxe, aucune ne donnant des résultats ..

find /home | grep -R -l 'expression?param='
find /home -name *.php -print -exec grep -H "expression?param=" {}\;

celle ci ne fonctionne que dans le repertoire local courant
grep -s -R -H 'expression?param=' *.php
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 742
find /home -name "*" -exec grep -Hn 'expression?param='  {} \;
Messages postés
1
Date d'inscription
lundi 31 mai 2010
Statut
Membre
Dernière intervention
31 mai 2010

Bonsoir,

Pourquoi pas simplement:
grep -rn 'expression?param=' /home/*.php

Utilise le développement de fichier (glob) natif de grep qui parcourra le répertoire /home/ récursivement (-r). L'option -H est superflue (valeur par défaut pour la recherche sur plusieurs fichiers).
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 742
/home/*.php
Là ça ne fait que parser les fichiers *.php du répertoire (/home où je doute qu'il y en ait ;-) ) mais ça ne descend pas dans l'arborescence ;-(

grep -rn --include='*.php' 'expression?param=' /home

Devrait le faire ;-))
Messages postés
1
Date d'inscription
mardi 1 juin 2010
Statut
Membre
Dernière intervention
1 juin 2010

Merci cette dernière fonctionne à merveille =)
find /chemin/vers/repertoire -type f -exec grep -il "lemot" {} \;

cette commande affiche la liste des fichiers qui contiennent le mot "lemot" dans le repertoire "repertoire" et aussi dans ses sous-repertoires
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 474
Salut,

man grep
       -H, --with-filename
              Afficher le nom du fichier pour chaque concordance.

Messages postés
85
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
30 juin 2009
5
find /home/ | grep premier
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 474
Salut,

Ta commande cherche tous les répertoires/fichiers dans /home qui contient dans leur nom le mot premier

Il demande
affichier les noms de fichiers qui contient le mot "premier" a partir de votre dossier "home"
Qui pour moi veut dire de trouver tous les fichiers qui ont dans leur contenu le mot "premier"

Si ta commande lui convient alors il a mal posé la question ;-)
ça ne marche, mais que sur le repertoire "home", pas récursivement
Messages postés
469
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2016
6
Salut,

grep -l "premier" /home/*

en utilisant l'option -l
en fait l'option -l ( L miniscule) fait ça:
grep -R -l <mot_recherché> <répertoire>
l'option -R permet de rechercher récursivement