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 !

2 comments

Poster un commentaire

Vous devriez utiliser le HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>