Programación y secuencias de comandos

-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 
Hash perl
PERL Hash Veamos en un par de ejemplos cómo podemos usar el hash perl. Primero necesitamos saber que el valor de Perl hash es accesible a través de la...
Habilite múltiples pantallas de clonos en VGA Interface Projector o TV
Si está haciendo una presentación con su computadora portátil, desea usar múltiples pantallas. Una pantalla será la pantalla de la computadora portáti...
Conexión a Internet de banda ancha móvil y sakis3g
Este artículo es solo una continuación de mi primer artículo sobre mi experiencia con Internet de banda ancha móvil en un sistema Linux. Para acortar ...