Une de mes pratiques courantes consiste à effectuer des greps sur tous les fichiers d'un certain type, par exemple, trouver tous les fichiers HTML qui contiennent le mot "rumpus". Pour ce faire, j'utilise
find /path/to -name "*.html" | xargs grep -l "rumpus"
Occasionnellement, findretournera un fichier avec un espace dans son nom tel que my new file.html. Cependant, une fois xargstransmis à grep, j'obtiens ces erreurs:
grep: /path/to/bad/file/my: No such file or directory
grep: new: No such file or directory
grep: file.html: No such file or directory
Je peux voir ce qui se passe ici: le tuyau ou le xargstraite les espaces comme des délimiteurs entre les fichiers. Pour la vie de moi, cependant, je ne peux pas comprendre comment empêcher ce comportement. Peut-on le faire avec find+ xargs? Ou dois-je utiliser une commande entièrement différente?