-Bash /bin /rm Lista de argumentos demasiado largos - Solución

-Bash /bin /rm Lista de argumentos demasiado largos - Solución

Síntomas

Este mensaje de error aparece cuando intenta eliminar, mover o copiar una larga lista de archivos. Al usar su shell, un comando solo puede aceptar un número limitado de argumentos. Cuando el número de argumentos suministrados al comando excede el número permitido de argumentos, aparecerá un mensaje de error:

-bash: /bin /rm: lista de argumentos demasiado tiempo 
Comando de Linux para encontrar su límite para los argumentos máximos:
# getConf arg_max 2097152 

Ejemplo:

# rm * -bash: /bin /rm: lista de argumentos demasiado tiempo 

Solución

Hay una cantidad de soluciones para este problema. En primer lugar, si no hay archivos dentro de un directorio que nos gustaría mantener, la mejor y más rápida solución es simplemente eliminar el directorio completo y recrearlo nuevamente. Antes de continuar, asegúrese de que el directorio no contenga archivos que le gustaría mantener y que tome una nota con respecto a los permisos y la propiedad de este directorio.

$ CD ... / $ LS -D MyDirectory $ RM -FR MyDirectory $ Mkdir MyDirectory 

La otra solución es activar un bucle para el bucle y eliminar todos los archivos uno sea uno:

$ para i in *; hacer rm "$ i"; hecho 

o mucho más rápido mediante el uso de printf y Xargs:

$ printf '%s \ 0' * | xargs -0 rm 

o

$ TIME ECHO -N * | tr "\ 0 '| xargs -0 rm 

Sin embargo, la solución anterior tiene su propia limitación, ya que también puede eliminar los archivos que nos gustaría mantener si no hay una expresión regular adecuada en su lugar en su lugar. En cuanto a un ejemplo aquí, solo eliminaremos *.TXT Archivos:

$ para i in *.TXT; hacer rm "$ i"; hecho 

La última y propuesta solución es usar Regex para dividir todo el archivo en lotes más pequeños. Encuentre un patrón similar en todos los archivos y divídalos en grupos más pequeños. Por ejemplo, primero elimine, copie o mueva todos los archivos que se inician con a y tener extensión TXT, Después de eso todos los archivos que comienzan con b etcétera.:

$ rm a*.txt $ rm b*.TXT 

También puede hacer lo anterior para todas las letras usando un bucle for:

$ para i en $ (echo a ... z); hacer rm $ i*.TXT ; hecho 

Tutoriales de Linux relacionados:

  • Cómo mover la carpeta en Linux
  • Comandos básicos de Linux
  • Comandos de Linux: los 20 comandos más importantes que necesitas ..
  • Vim Editor Basics en Linux
  • Bash Script: Uso de banderas con ejemplos de argumentos
  • Cómo configurar un servidor OpenVPN en Ubuntu 20.04
  • Comando de hombre en Linux con ejemplos
  • Ubuntu 20.04: Lista de clientes de torrents
  • Ubuntu 20.04 trucos y cosas que quizás no sepas
  • Cómo gestionar la historia de Bash