Linux Shell : exemple de grep et expressions régulières
Ci-suivent des exemples de grep qui fonctionnent.
Je veux très souvent lister tous les fichiers php / htm / Javascript. J’ai deux possibilités :
find . | grep -E '(php|htm|html|js)$' | more
find . | grep '\(php\|htm\|html\|js\)$' | more
Je veux aussi souvent chercher parmi tous mes fichiers de mon site Internet, lesquels contiennent un mot particulier. Prenons par exemple le mot « Internet ». J’ai deux possibilités :
find . | grep -E '(php|htm|html|js)$' | xargs grep Internet
find . | grep '\(php\|htm\|html\|js\)$' | xargs grep Internet
Je le note parce que je ne comprenais pas pourquoi ce qui suit ne fonctionnait pas :
find . | grep '(php|htm|html|js)$' | xargs grep Internet
C’est tout simplement que par défaut (je ne sais pas si c’est le fait de mettre des quotes (« '
« )) qui y fait, mais grep considère que ce qui est passé ainsi doit être cherché littéralement, et donc il ne ressortira que les fichiers dont le nom contient ces caractères : « (php|htm|html|js)
« … ce qui n’est pas le but recherché. Mes exemples précédents, eux, fonctionnent correctement.
En espérant que cela serve à quelqu’un un jour !