domingo, 15 de marzo de 2009

Borrar archivos recursivamente

Supongo que a alguno le ha pasado que, moviendo datos entre distintos sistemas, acabas con una buena colección de archivos específicos del sistema donde no deberían estar.

Más en concreto, al sincronizar datos entre sistemas OSX y GNU/Linux con rsync, si se nos olvida utilizar la salvaguarda --exclude=.DS_Store, arrastramos uno de estos archivos por carpeta, lo que resulta cuanto menos molesto. También pasa algo parecido si hemos usado windows con los archivos Desktop.ini y otros del estilo *.ext.

Usando la bash se pueden borrar todos de un plumazo. Primero nos situamos en el directorio superior y buscamos a ver si tenemos archivos de ese tipo. Por ejemplo, para la morralla que deja el mac, haríamos en nuestro linux:

find -iname .DS_Store

Si nos sale una ristra de direcciones, podemos comprobar que no corresponden a ninguna partición montada de HFS+. En caso de que "casualmente" lo esté, cuidado, desmontadla primero. Una vez asegurados que queremos borrar todos los archivos de la lista, le decimos al comando que los elimine mediante:

find -iname .DS_Store -exec rm {} \;

Si alguno es de sólo lectura, nos pedirá confirmación de borrado.

1 comentario:

Martin Alurralde dijo...

Muchas gracias, este post me ha ahorrado varias horas de trabajo engorroso.