Grep et argument exclude
La commandeGrep
sous Linux, Unix, permet de rechercher de façon très efficace du texte (ou une chaîne de caractère, ou tout motif de texte, chaîne régulière, ...) dans un ensemble de fichiers.
Cette commande possède d'assez nombreux arguments pour pouvoir mieux cibler à la fois la chaîne recherchée ainsi que l'ensemble des fichiers sondés.
On peut bien sûr limiter la recherche à un répertoire, ou un ensemble de sous-répertoire récursivement.
Personnellement, lorsque j'utilise cette commande, cela m'exaspère de trouver la trace du texte que je recherche dans tous les fichiers temporaires et autres fichiers de sauvegarde. Par exemple, en éditant mes textes avec Emacs, celui-ci créé automatiquement (et d'ext une bonne chose) un fichier de sauvegarde du fichier courant qui porte le même non mais avec un "~" à la fin de l'extension (par exemple pour éditer le fichier "fich.txt", Emacs créé le fichier de sauvegarde "fich.txt~"). De nombreux éditeurs de texte fonctionnent aussi ainsi.
Bref lors d'une recherche avec grep, il me semble tout naturel de ne pas afficher ces fichiers temporaires et de sauvegarde dans les résultats. Pour ce faire, l'argument
exclude
de grep peut être utilisé:
grep --exclude=files pattern file
Par exemple, pour rechercher la chaîne "xy" dans tous les fichiers et dossiers récursivement (argument "-R") à partir du dossier racine "/home/yoann" en excluant tous les fichier de sauvegarde, donc terminant pour moi par un tilde "~", la commande est
grep -R --exclude=*~ xy /home/yoann/