Borrado masivo de ficheros en Linux

06-Agosto-2009

Si os habeis encontrado en vuestros servidores con un directorio con miles y miles de ficheros de logs y habeis intentado hacer un rm -f /directorio/* habreis podido comprobar que rm se queja indicando:


# rm *
-bash: /bin/rm: La lista de argumentos es demasiado larga

Es una limitación del sistema operativo y por tanto no se le pueden pasar a rm más de X atributos. La solución es una combinación de comandos entre find y rm de la siguiente forma:

Nombre de ficheros normales


find /directorio/a/borrar -type f -exec rm '{}' \;

Nombre de ficheros con espacios y otros caracteres extraños


find /ruta/al/directorio_spam -type -f -print0 | xargs -0n 100 rm

Si no quereis probar el comando directamente por miedo, podeis sustituir el comando del final “rm” por un “echo” y ver que es lo que borraría. Quedaría de la siguiente forma:


find /ruta/al/directorio_spam -type -f -print0 | xargs -0n 100 echo