Unix - Commandes - grep
recherche de chaînes de caractères
option :
-r, --recursive
Pour chercher la chaine plop dans tous les fichiers du répertoire courant ainsi que dans les sous-répertoires (le caractère . est un chemin relatif qui désigne le répertoire courant) :
grep -r 'plop' .
A noter qu'il ne faut pas utiliser de joker en début et fin de chaine. Ils sont implicites
grep -r '*plop*' .
Options :
-i : insensible à la casse
-l : (L minuscule) affiche le nom du fichier au lieu du contenu
grep -r -i 'PLOP' . grep -r -i 'plop' .donneront les mêmes résultats
--include : pour un type de fichier
grep -r "scelle" . --include "*.xsd"
grep -lr "ERROR" --exclude '*[0-9][0-9][0-9][0-9][0-9][0-9]*.*' . grep -lr "ERROR" --exclude '*20*.*' .
Les caractères jokers :
grep -r '201205300.0' .
grep -r '201205300*0' .
find -iname '*.php' | xargs grep -r 'substitution'
D'autres exemples :
Recherche la chaine NIVA.LV dans les fichiers dont le nom correspond à 20111214*_IE347C*
et l'ensemble des sous répertoires, ceci de façon récursive (-r)
grep -r "NICA.LV" ll 20111214*_IE347C*
Recherche la chaine EURO dans les fichiers et l'ensemble des sous répertoires, ceci de façon récursive (-r
)
et copie des fichiers dans le sous-répertoire toto
grep -l -r "EURO" . | xargs -i -t cp {} ./toto
.* = N caractères quelconques
grep -r "BASE.*declaration-amq\>" . >~/tmp/fred_ect_douane_20130125_declaration_amq_BASE.log
\ = pour échapper un caractère
grep -r "\"erreur\"" .
Use case pipe to copy results in a output directory :
grep -lr '<string>' . | xargs cp -t <output directory>
Example
grep -lr 'traducteur ENS2ACM' . | xargs cp -t ~/tmp/frixente1540/toto grep -lr '�' . | xargs cp -p -t ~/tmp/frixente/0402/
option :
-F, --fixed-strings Interpret PATTERNS as fixed strings, not regular expressions.
ex :
recherche ci-dessous, chaque . est considéré comme un caractere joker. (1 point = 1 caractere).
grep -lr '37.58.115.90'
ici
grep -lrF '37.58.115.90'
considere le point comme le caractere à charcher et non plus un joker.
ainsi :
grep -lrF '37.58.115.90'
est exactement la meme instruction que
grep -lr '37\.58\.115\.90'
et retourne comme repondant aux criteres, la chaine suivante :
_Part_100837258_1158908485.1674635257251
http://www.funix.org/fr/unix/grep-find.htm