Borrado masivo de ficheros en Linux
Si os habéis encontrado en vuestros servidores con un directorio con miles y miles de ficheros de logs y habéis intentado hacer un rm -f /directorio/* habréis 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 no se pueden pasar a rm más de X atributos. Algo que nos afecta enormemente a la hora de hacer un borrado masivo de ficheros.
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 queréis probar el comando directamente por miedo, podéis 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