Fichiers contenant une chaine de caractère
Résolu/Fermé
mathieu
-
mathieu -
mathieu -
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
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
7 réponses
-
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"
;-)) -
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 -
à 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 ";". -
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... -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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)
-
-