Je recherche des fichiers en fonction d'une expression régulière, puis j'essaie de rechercher du contenu dans ces fichiers. Ainsi, par exemple, j'ai quelque chose comme
#Find all C++ files that match a certain pattern and then search them
find . -name "*.cpp" | grep "<name regex>" | xargs grep "<content regex>"
Le problème que je rencontre est que certains des chemins contiennent des espaces, ce qui est déroutant xargs
. Je sais que si j'utilisais simplement find
, je pourrais utiliser l' -print0
argument (avec l' -0
argument xargs
activé) pour empêcher les xargs de traiter les espaces comme des délimiteurs. Y a-t-il quelque chose de similaire avec grep
?
Ou est-ce que j'aborde complètement ce problème de la mauvaise façon? Naïvement, find
to a grep
du xargs grep
sens pour moi, mais je suis ouvert à d'autres approches qui donnent les mêmes résultats.
xargs
en utilisant le-i
paramètre, a lacat sample.txt | grep "pat t ern" | xargs -i grep "{}"
- les accolades indiquent où positionner l'argument. Le manuel me dit que-i
c'est déconseillé en faveur de-I
donc peut-être la peine d'y jeter un œil.