Una de mis prácticas comunes es realizar greps en todos los archivos de cierto tipo, por ejemplo, encontrar todos los archivos HTML que tienen la palabra "rumpus" en ellos. Para hacerlo, yo uso
find /path/to -name "*.html" | xargs grep -l "rumpus"
Ocasionalmente, find
devolverá un archivo con un espacio en su nombre como my new file.html
. Sin embargo, cuando se xargs
pasa esto a grep
, obtengo estos errores:
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
Puedo ver lo que está pasando aquí: ya sea la tubería o el xargs
está tratando los espacios como delimitadores entre archivos. Sin embargo, por mi vida, no puedo entender cómo prevenir este comportamiento. ¿Se puede hacer con find
+ xargs
? ¿O tengo que usar un comando completamente diferente?