12 diciembre 2007

Cómo borrar muchos ficheros pequeños en Linux

Todo está relacionado con el correo :-(
En una carpeta tenía cientos de miles de correos para borrar; no exagero eran 189000.

Intenté borrar con un bucle en bash, pero eso los cargaba todos en memoria, después de una hora todavía no había borrado nada.

También hice un pequeño script en python que metía todos los mensajes en una lista y luego los borraba, pero tampoco me convenció, así que al final me decidí por utilizar find y en poco más de hora y media me borró todo.

El comando que utilicé fue:
find carpetaparaborrar -type f -exec rm -rf '{}' \;

Corregidos los problemas espero no tener que borrar tal cantidad de ficheros pequeños

4 comentarios:

Anónimo dijo...

Buen comando xD
por cierto te deje un meme en mi blog
saludos.

jmcalvar dijo...

Supongo que ya lo habrás visto :-)

Anónimo dijo...

Y cómo lo harías para borrar todos los ficheros de un directorio dejando solo los mas recientes? Y que el número de recientes que quieras mantener puedas elegirlo?

jmcalvar dijo...

Hombre pues ahí ya haría un script, lo más probable es que lo hiciera en python, para poder utilizar listas y diccionarios.

Lo que haría es listar el directorio de ficheros, iterar sobre él, estraer la información de fecha de creación y meter en un diccionario el nombre del fichero como clave y la fecha de creación como valor.

De este modo podría iterar con el diccionario y no borrar los ficheros mayores de una fecha.

Para poner un límite, pues pondría un contador.

Obviamente esto sería más lento que el borado con el "find", pero supongo que ahora se buscaría más seguridad.

Si quieres te hago el script, pero en unas horas que ahora tengo trabajillo.