Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
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 13/05/2008, 18h06   #1
Membre régulier
 
Avatar de hammag
 
Inscription : février 2006
Messages : 477
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 477
Points : 94
Points : 94
Par défaut commande find: trouver les fichiers qui contiennent une chaine de caractère

salut,
voici mon problème :
je cherche comment trouver dans un répertoire la liste des fichiers qui contiennent l'occurrence d'une chaine donnée.
j'ai essayé avec la commande find mais sans résultat :

Code :
1
2
 
find / -name "*.ksh"  | grep 'ma_chaine'
hammag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 18h52   #2
Membre chevronné
 
Avatar de matrix788
 
Inscription : juin 2002
Messages : 695
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 695
Points : 792
Points : 792
qu'entends-tu par sans résultat ?

car la commande fonctionne bien, mis à part la recherche en racine avec ton "/", où il faut les droits root...
__________________
Modérateur Linux
n'oubliez pas de cliquer sur résolu...

== pas de question technique en MP. Merci ==
matrix788 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 22h59   #3
Membre chevronné

 
Avatar de D[r]eadLock
 
Inscription : mai 2002
Messages : 504
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : mai 2002
Messages : 504
Points : 622
Points : 622
Citation:
Envoyé par hammag Voir le message
salut,
voici mon problème :
je cherche comment trouver dans un répertoire la liste des fichiers qui contiennent l'occurrence d'une chaine donnée.
j'ai essayé avec la commande find mais sans résultat :
Il faut utiliser soit -exec de find, soit xargs
Code :
1
2
 
find / -name "*.ksh" -exec grep -nH "ta_chaine" {} \;
ou (pas teste mais je crois que c'est ca)
Code :
1
2
 
find / -name "*.ksh" | xargs grep -nH "ta_chaine"
Rq: ce que tu fais c'est greper la sortie de find (c'est-a-dire les noms des fichiers !)
__________________
1)Avant de poster, merci de lire les règles. 2)Utiliser [code] [/code] pour quoter le code ! 3)Conseils pour le forum C [a lire en entier!]
D[r]eadLock est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2008, 13h19   #4
Membre émérite
 
Avatar de Celelibi
 
Inscription : janvier 2004
Messages : 990
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 990
Points : 822
Points : 822
À moins de vouloir rajouter plus de critères, la commande find est inutile.
Code :
grep -r --include '*.ksh' -e 'ta chaine' le/rep/
Cette commande devrait suffire.
L'option -r dit de parcourir récursivement les répertoires.
L'option --include dit de chercher seulement les fichiers dont le nom correspond au pattern.
L'option -e n'est pas obligatoire, mais indique explicitement que ce qui suit est le pattern à chercher.
Si tu veux afficher juste le nom des fichiers, tu peux rajouter l'option -l.
Enfin, je dirais simplement man grep.

Si tu as des critères supplémentaires que la commande grep ne permet pas de gérer, la première commande de D[r]eadLock est la bonne.
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.
Celelibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h05.


 
 
 
 
Partenaires

Hébergement Web