Scripting : xargs – paths con espacios – wildcard

Cuando queremos ejecutar comandos shell – sobretodo ‘find’ – enlazados via pipe que incluyen paths, directorios o carpetas con espacios nos encontramos con problemas cuando recogemos una salida y queremos aplicarle un comando xargs. La solución es decirle a find que acabe sus resultados con el caracter null y avisar a xargs que le van a llegar entradas con el caracter null :
find /path/con espacios/ -type f -print0 | xargs -0 -I % ls %
Si el comando que alimenta xargs no puede añadir el carater null podemos ‘encapsular’ el resultado entre comillas con un sed :
ls /path/con espacios/ | sed 's/.*/"&"/' | xargs -I % echo %
Finalmente, si queremos usar una wildcard en un comando ejecutado por xargs tenemos que ‘encapsularlo’ en un nuevo shell :
find /path/con espacios/ -type f -print0 | xargs -0 -I % sh -c 'ls "%"*sufijoespecialqueestamosbuscando'

Un comentario