Fichiers contenant une chaine de caractère

Résolu/Fermé
mathieu - 24 mai 2005 à 14:09
 mathieu - 24 mai 2005 à 14:36
bonjour,

quelle commande me permettrait de savoir quels fichiers ds un dossier que l'on appellera D1 contiennent une chaîne de caractères string1?
je pense qu'il faut faire appel aux commandes find et grep.
à mon avis, il faudrait les utiliser ds une même ligne de commande.
jai essayé find [chemin du dossier D1] -name |grep string 1 -print...
ça ne marche pas...

merci de m'éclairer!

mathieu
A voir également:

7 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
24 mai 2005 à 14:18
Salut,

Alors tu peux essayer avec la commande "find" comme ceci :
find /chemin/rep -name "*" -exec grep -Hn "string" {} \;
Alors en gros on recherche dans le répertoire "/chemin/rep", en passant en revue tous les fichiers du répertoire et des sous-répertoires (tu peux cibler d'avantage en réduisant la recherche à quelques répertoires ou aux extensions de fichiers), puis pour chaque fichier on recherche la chaîne (string) en affichant le chemin (-H) et le numéro de ligne (-n) si la chaîne est trouvée.

Tu peux aussi essayer comme ça :
find /chemin/rep -name '*' |xargs grep -l "string" 
;-))
66
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
24 mai 2005 à 14:14
grep -nri motif filtrefichier

n -> dans le fichier
r -> recherche récursive (ie dans les sous répertoires)
i -> insensible à la casse

Exemple :
$ grep -nri "include" *.cpp
38
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
24 mai 2005 à 14:34
à koi correspondent xargs et Hn?
Pour "xargs" => man xargs
pour "-Hn" => lire mon post en entier, c'est expliqué ;-))

Pour "{}", ça représente toutes les occurences trouvées correspondants au motif "*" (là dans ce cas, tous les fichiers du répertoire et des sous-répertoires).

Le ";" c'est pour signifier la fin de la commande, et le "\" devant c'est pour "échapper" le caractère ";".
11
merci!
si je comprends bien, il faut donc que je me positionne au niveau du dossier qui m'intéresse: ici D1...
car je ne souhaite pas kil me recherche la chaine ds tous les réperetoires mais juste ds le dossier D1 et je ne sais comment lui spécifier...
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
24 mai 2005 à 14:20
Pour le grep que je t'ai donné la recherche se fait à partir du dossier où tu te trouves. L'option -r permet de fouiller en plus dans ses sous-dossiers. Bref évite de faire ce genre de choses depuis / sinon tu risque d'avoir le temps long ;o)
3
merci!

à koi correspondent xargs et Hn?
pkoi rajouter "{} \;" ?
1
ok merci!
1