Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2007, 08h44   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 161
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 161
Points : 40
Points : 40
Par défaut Recherche fichier avec grep

Bonjour,

Savez-vous comment rechercher des fichiers dans un autre répertoires avec grep ?

Je m'explique

je cherche :

Code :
grep -i -l "motifs de recherche" /usr/local/bin/*
grep me retourne des noms de fichier, mais comment rediriger le flux pour rechercher ces noms de fichier dans un autre répertoire en l'occurrence /root

J'avais penser à:

Code :
grep -i -l "motifs de recherche" /usr/local/bin/* | find /root -type f -print
mais ca marche pas

Je vous remercie
Fluxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 10h03   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
C'est presque ça :
Code :
find /root -type f -exec grep -li "motifs de recherche" {} \;
Ca veut dire : pour chaque fichier trouvé dans /root et en dessous, execute la commande grep -li "motifs de recherche". {} correspond au fichier trouvé par find. \; est le délimiteur pour indiquer la fin de la séquence -exec.

Sinon, le grep GNU a une option -R ou -r pour faire une recherche récursive sur les sous-répertoires, je crois.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 14h46   #3
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 497
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 497
Points : 9 677
Points : 9 677
Bonjour,

Si j'ai bien compris, tu cherches à savoir quels sont les fichiers présents dans /usr/local/bin qui sont également présent dans /root ? Si c'est bien le cas, diff permet de faire ce que tu veux.

Et si ce n'est pas le cas, et que la réponse de _Mac_ ne résout pas non plus ton problème, essaye de nous donner un exemple.
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 17h07   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
Effectivement, je n'avais pas bien lu. Dans ce cas, c'est effectivement plus compliqué. Si tu ne fais pas de recherche dans les sous-répertoires, tu dois pouvoir faire simple :
Code :
1
2
cd /root
find . -type f -exec grep -li "motifs de recherche" /usr/local/bin/{} \;
Mais si tu veux rechercher dans tous les sous-répertoires, etc. là, c'est chaud, faut sûrement faire une boucle.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 17h40   #5
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Un peu lourd, mais ça marche (en bash)

Code :
1
2
3
4
5
grep -Rl "motifs de recherche" /usr/local/bin | \
while read file ; do
	Basefile=$(basename $file)
	find /root -name $Basefile -ls
done
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 12h25   #6
Membre du Club
 
Inscription : juillet 2006
Messages : 161
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 161
Points : 40
Points : 40
Merci pour vos réponses, je test dès que j'ai un moment.

Je met en résolut.

++
Fluxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h57.


 
 
 
 
Partenaires

Hébergement Web