8 de septiembre de 2009

Borrado recursivo con find

En Linux, el comando find nos sirve para realizar búsquedas de archivos de formas muy variadas. Entre sus opciones también nos permite ejecutar operaciones sobre los archivos encontrados. De este modo podemos, por ejemplo, eliminar una serie de archivos distribuidos en diferentes carpetas. Veamos un caso:
find ejemplo -name *.bak
buscaría todos los archivos con extensión .bak en todas las subcarpetas de ejemplo.

Si además añadimos la opción -delete (OJO, hay que añadirla siempre despúes del patrón de búsqueda, siempre al final. Si no borraría todos los archivos, no sólo los .bak).
find ejemplo -name *.bak -delete
eliminará automáticamente todos esos archivos, evitando el tener que buscarlos uno a uno.

Evidentemente el mejor consejo en este caso es ejecutar primero el comando sin el -delete, para asegurarnos de que la lista de archivos que vamos a borrar es exactamente la que queremos y que no se nos mete ningún otro elemento. Posteriormente añadimos el -delete, pero al final de la línea.

Hay multidud de opciones interesantes, como -print,