A veces hay que trabajar en línea de comandos (o mejor, línea de órdenes) con nombres de ficheros con espacios. Y es un problema pasarlos por las tuberías (pipes), porque estas interpretan los espacios como separación entre argumentos.
Pongamos un ejemplo: hoy enchufé mi disco externo a un ordenador Windows y se me llenó de ficheros llamados Thumbs.db. Es un problema borrarlos uno a uno, así que lo más cómodo es usar find de una manera como ésta:
find . -name Thumbs.db | xargs rm -rf
Pero no funciona. Un fichero que se llame mountpoint/Mi Carpeta/Thumbs.db será entendido por xargs como dos ficheros distintos, mountpoint/Mi y Carpeta/Thumbs.db, que por supuesto no existen.
La solución es tan sencilla como:
find . -name Thumbs.db | sed '{s/ /\\ /g}'| xargs rm -rfutilizando sed para escapar los espacios. Ojo, que no funcionará sin las comillas sencillas para escapar las barras invertidas.
No hay comentarios:
Publicar un comentario