11 de Marzo 2008

Comandos útiles para borrados largos y/o recursivos con patrones

Muchas veces queremos borrar una larga lista de ficheros, creados por algún proceso en ejecución, que contienen un patrón determinado en su nombre (sean ficheros de logs, sesiones, etc.). Puede darse el caso que dicha lista sea muy extensa y que no se nos permita hacer un borrado simple recursivo. Normalmente cuando pasa esto nos aparece este problema:

bash: /bin/rm: Argument list too long

Entonces, podemos utilizar un comando del estilo siguiente para hacer el borrado de estos ficheros tan similares (en este caso supongo que los nombres de los archivos empiezan por "log_"):

for i in ls /tmp/log_*; do rm -v $i -f; done

Otro caso común es cuando necesitamos eliminar unos ficheros y/o directorios que se repiten a lo largo de un profundo árbol de directorios. Un ejemplo muy común de este caso podrían ser los directorios ".svn" que crean los repositorios del Subversion a lo largo de sus directorios internos. Para poder eliminarlos se puede usar un comando similar a este:

rm -rf `find . -type d -name .svn`

El cúal elimina recursivamente dichos directorios buscándolos por su nombre.

Espero que os sean de utilidad ;).

, ,

enviado por Carlos 1 comentario

1 comentarios » escribe aquí tu comentario

Dani

Dani dijo

También puedes usar xargs:


$ find . -type d -name .svn | xargs rm -f

13 Abril 2008, 18:38

escribe tu comentario

Si prefieres firmar con tu avatar, haz login


(Por ejemplo http://www.google.es)