Salut,
Je voudrais, en console, rechercher une chaine de caractères dans tous les fichiers situés dans un répertoire et ses sous répertoires.
J'avais fait ça il y a longtemps, j'avais noté que c'était la commande suivante :
$ find /path -type f exec grep -I 'chaine' {}
mais ça me donne :
[blz@localhost ~]$ find /home/blz -type f exec grep -I 'test' {}
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]
[blz@localhost ~]$
Je ne suis pas trop expert en commandes shell un peu complexes, alors je me replonge dans les man pages de find, mais je suis preneur si quelqu'un peut m'indiquer la bonne syntaxe.
Merci
Bonjour,

rajoute simplement " \; " à la fin de la commande (et attention : -exec est une option, à préfixer par un tiret) :
$ find /home/blz -type f -exec grep -I 'test' {} \;
Ou bien passe aussi par xargs :
$ find /home/blz -type f -print0| xargs -0 grep -I 'test'
J'en arrive là :
[blz@localhost ~]$ find /home/blz/tmp/tmp -type f -exec grep -I 'test' '{}' \;
test1
test2
[blz@localhost ~]$
Ça me renvoie donc toutes les occurences de 'test' trouvées dans tous les fichiers. C'est déjà ça, mais j'aimerai aussi savoir dans quel fichier chaque occurence se trouve... une idée ?

Edit :
merci à toi Pikachu_2014, avec ta deuxième commande, ça marche très bien, j'ai le nom des fichiers qui contiennent la chaine recherchée :
[blz@localhost ~]$ find /home/blz/tmp/tmp -type f | xargs grep -I 'test'
/home/blz/tmp/tmp/test1.txt:test1
/home/blz/tmp/tmp/test2.txt:test2
[blz@localhost ~]$
🙂 :pint:
Il faut ajouter \; à la fin de ta ligne et - devant exec :
find /home/blz -type f -exec grep -H -i "toto" {} \;
Sinon, pourquoi ne pas faire :
grep -r test /home/blz
Ok, j'ai édité mon dernier message, ça marche bien.
Bien vu aussi l'option -l pour grep, Pikachu_2014.
Et ça marche aussi très bien avec la commande de proxy.
Bravo à vous pour votre maitrise, et j'aime bien le fait qu'on puissse obtenir le même résultat en empruntant différents chemins.
Perso. je préfère le " grep -r " de proxy (à quand les versions GNU de ces commandes sous Solaris au taf ??? :-D).