El problema
Al intentar enumerar o interactuar con una gran cantidad de archivos desde la línea de comandos, se produce el siguiente error:
$ ls -l *.xml | wc -l bash: /bin/ls: Argument list too long 0
$ rm *.xml bash: /bin/rm: Argument list too long
o cuando intenta eliminar una gran cantidad de archivos usando el comando de búsqueda, falla con el siguiente mensaje de error:
$ find /u01/oracle/apps/fs1/EBSapps/appl/xdo/12.0.0/temp/*.xml -mtime +120 -exec rm -v {} \; bash: /usr/bin/find: Argument list too long
La solución
Hay un límite grande pero finito para la línea de comandos impuesto por el kernel y los errores que se muestran arriba indican que se ha alcanzado ese límite.
Para solucionar esto, se puede usar xargs, que acepta una lista de nombres de archivo de su entrada estándar y ejecuta un comando en ellos. Puede usar 'buscar' en combinación con 'xargs' como se muestra a continuación:
# find . -type f -name '*.xml' | xargs rm
NOTA :El comando anterior eliminará todos los archivos con una extensión .xml en el directorio actual sin ninguna confirmación. Le recomendaría que primero haga una copia de seguridad de los archivos necesarios antes de ejecutar. Siempre es bueno verificar en una máquina de prueba y comprobar antes de proceder en la máquina de producción.