Command line in a nutshell
Voici une ligne de commande très puissante sur Linux pour chercher des infos dans des fichiers en utilisant Find et Grep.
Je ne sais pas combien de fois j’ai cherché un mot ou une chaîne de caractères dans mon arborescence sachant pertinemment qu’elle existe mais sans me souvenir ou elle se situe.
Dans ce cas précis, j’exécute la puissante ligne de commande, qui utilise les fonctions find et grep pour rechercher ce dont j’ai besoin:
# find . -type f -exec grep -il 'KaizerOnion' {} \;
C’est une façon particulière de mélanger les commandes find et grep pour rechercher tous les fichiers dans chaque sous-répertoire de mon emplacement actuel. Elle recherche la chaîne “KaizerOnion” dans chaque fichier sous le répertoire courant, d’une manière insensible à la casse. Cette fonction peut être décomposé comme suit:
- “.” signifie qu’il regarde dans le répertoire courant
- “-type f” signifie qu’il regarde uniquement dans les fichiers
- “-exec grep -il kaizeronion” signifie qu’il recherche la chaîne ‘kaizeronion’ sans se soucier des majuscules ou miniscules et retourne la ligne et le fichier correspondant quand il a trouvé.
A noter que sur Mac OS X vous pouvez utiliser la fonction mdfind au lieu de la combinaison Find et Grep. La commande mdfind est la ligne de commande équivalent au Spotlight.
$ mdfind
mdfind: no query specified.
Usage: mdfind [-live] [-count] [-onlyin directory] [-name fileName | -s smartFolderName | query]
list the files matching the query
query can be an expression or a sequence of words
-live Query should stay active
-count Query only reports matching items count
-onlyin Search only within given directory
-name Search on file name only
-s Show contents of smart folder
-0 Use NUL (``\0'') as a path separator, for use with xargs -0.
example: mdfind image
example: mdfind -onlyin ~ image
example: mdfind -name stdlib.h
example: mdfind "kMDItemAuthor == '*MyFavoriteAuthor*'"
example: mdfind -live MyFavoriteAuthor
Thomas K
Yop!
Ces commandes sont super utiles, mais elles ne renvoient pas le fichier ainsi que le numero de la ligne ou match le pattern.
Tu as une solution sans passer par xargs?
Thx
Franck
Si elle te renvoi le path du fichier mais en effet pas le numero de la ligne qui match le pattern.