shell grep liste fichier
Shell - Faire un grep sur une très longue liste de fichiers
La commande grep est une des plus utile dans les systèmes Unix / Linux. Mais souvent, j'ai eu comme problème d'avoir une liste de fichier trop longue. Quand on veut faire une recherche de cette façon :
$ grep mot *
si le répertoire courant contient trop de fichier, la commande ne passe pas car elle est trop longue. Du coup, j'avais pour habitude de procéder ainsi :
$ find -type f -iname '*.ext' --exec grep mot '{}' \;
Du coup de cette façon la liste complète des fichiers du répertoire n'est pas insérée dans ligne de commande et ne pose plus de problème. A part le fait que cela prend nettement plus de temps, cela pose aussi le problème que grep n'affiche pas le nom du fichier étant donné qu'il s'agit de plusieurs grep lancer un après l'autre sur un seul fichier. Pour résoudre ce problème, j'ai trouvé l'argument « -H » qui permet de forcer l'affichage du nom du fichier. Ce qui donne :
$ find -type f -iname '*.ext' --exec grep -H mot '{}' \;