GNU/Linux >> Tutoriales Linux >  >> Linux

No se pueden eliminar archivos del directorio con el error "Lista de argumentos demasiado larga"

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.


Linux
  1. ¿Por qué el comando Ls tarda en interrumpirse en el directorio Nfs con muchos archivos?

  2. ¿Instalar/eliminar la lista de paquetes de la línea de comandos con apt-get?

  3. busque y elimine archivos con espacio usando el comando de búsqueda en Linux

  4. Error de lista de argumentos demasiado larga para comandos rm, cp, mv

  5. OSError intermitente:[Errno 7] Lista de argumentos demasiado larga con comando corto (~125 caracteres)

Cómo eliminar un directorio en Linux

Cómo eliminar directorios y archivos usando Linux

Eliminar directorio en Linux:cómo eliminar una carpeta desde la línea de comandos

Cómo listar archivos recursivamente en Linux

Conceptos básicos de la línea de comandos de Linux:trabajar con archivos y directorios

¿Cómo puedo eliminar todos los archivos de un directorio cuando informa que la lista de argumentos es demasiado larga?