jueves, 12 de mayo de 2016

Tratando con nombres de archivo simpáticos

Los sistemas tipo Unix permiten la inclusión de espacios (¡e incluso nuevas líneas!) en los nombres de archivo. Esto causa problemas a programas como xargs que construyen listas de argumentos para otros programas. El espacio incluido será tratado como un delimitador, y el comando resultante interpretará cada palabra separada por un espacio como un argumento separado. Para remediar ésto, find y xarg permiten el uso opcional de un carácter nulo como separador de argumentos. Un carácter nulo se define en ASCII como el carácter representado por el número cero (en lugar de, por ejemplo, el carácter espacio, que se define en ASCII como el carácter representado por el número 32). El comando find cuenta con la acción -print0, que produce una salida separada por nulos, y el comando xargs tiene la opción --null, que acepta entradas separadas por nulos. Aquí tenemos un ejemplo:

find ~ -iname '*.jpg' -print0 | xargs --null ls -l

Usando esta técnica, podemos asegurarnos que todos los archivos, incluso los que contienen espacios en sus nombres, son tratados correctamente.

No hay comentarios:

Publicar un comentario