viernes, 7 de marzo de 2014

Cómo pasar los nombres de archivos que contengan espacios a una tubería


Al utilizar el comando find de esta forma:

find . -iname "*.htm*" | xargs -n1 grep -H -i "palabra"

los nombres de archivos que contengan espacios se pasaran de forma fragmentada en la tubería, de forma tal que un nombre de archivo como "Fulano de tal.htm",  pasado a grep con la tuberia (pipe en inglés: '|') lo vera como 3 archivos distintos: "Fulano", "de", "tal.hm", debido a que toma el carácter de espacio " ", como un delimitador. Para evitar dicho problema debe corregirse la instrucción anterior de esta forma:

find . -iname "*.htm" -print0 | xargs -0 -n1 grep -H -i "palabra"