Petit mémo pour trouver tous les fichiers contenant une chaîne de caractères en ligne de commande sous Linux. Nous utiliserons la commande GREP et les arguments l et R.
Un peu de théorie
-l, --files-with-matches
Ne pas afficher les résultats normaux. À la place, indiquer le nom des fichiers pour lesquels des résultats auraient été affichés. La recherche à l'intérieur de chaque fichier s'arrête dès la première concordance.
-R, -r, --recursive
Lire tous les fichiers à l'intérieur de chaque répertoire, récursivement. C'est équivalent à l'option -d recurse.
Source : http://pwet.fr/man/linux/commandes/grep
Exemple d'utilisation
Dans mon exemple, je souhaite trouver tous les fichiers contenant la chaîne de caractères "ma chaine" dans le répertoire /test
En utilisant un chemin absolu :
user@SRV-NEXTCLOUD:/# grep -lR "ma chaine" /test /test/www/test2.php /test/www/test.php user@SRV-NEXTCLOUD:/#
En utilisant un chemin relatif :
user@SRV-NEXTCLOUD:/# cd /test user@SRV-NEXTCLOUD:/test# grep -lR "ma chaine" . ./www/test2.php ./www/test.php user@SRV-NEXTCLOUD:/test#