GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo calcular la cantidad de archivos que se pueden pasar como argumentos a algún comando para el procesamiento por lotes?

Deja que xargs haga el cálculo por ti.

printf '%s\0' files/* | xargs -0 mv -t new_files_dir

Su pregunta parece asumir que hay un "límite de número de argumentos" real, mientras que en realidad es una combinación de dos límites:

  1. la suma de las longitudes de cadena de los argumentos de la línea de comando y variables de entorno, incluidos sus bytes NUL de terminación.

  2. la longitud máxima de cadena de un único argumento de línea de comandos.

Por ejemplo, puede llamar a un comando con 200000 argumentos de una sola letra, con 100000 argumentos de dos letras, pero no con un solo argumento de más de 128k bytes.

Asumiendo el xargs de GNU coreutils, xargs --show-limits </dev/null mostrará cuáles son esos límites en su sistema.

En cualquier sistema, xargs no use los límites máximos de su sistema cuando construya líneas de comando, pero elija algo razonable (no tendría ningún sentido poner tensión en el sistema de esa manera).


Si realmente importa, podrías escribir tu propio batch-move programa en C, que toma p. la lista de archivos como entrada estándar y hace el movimiento usando las llamadas del sistema Unix relevantes.

Si no, el "descubrir los límites y trabajar hasta eso" es exactamente qué xargs(1) (Versión GNU en Linux, aquí) lo hace. Dudo mucho que llegues mucho más rápido.


Linux
  1. ¿Cómo uso las líneas de un archivo como argumentos de un comando?

  2. ¿Cómo puedo pasar todos los argumentos con xargs en medio del comando en Linux?

  3. ¿Cómo puedo mover archivos con xargs en Linux?

  4. ¿Cómo puedo probar la memoria RAM para detectar daños en los datos en un sistema basado en ARM?

  5. ¿Cómo puedo abrir un archivo con números de línea que se muestran desde la línea de comando en 'vi'?

Cómo buscar archivos desde la línea de comandos de Linux

Cómo encontrar archivos con el comando fd en Linux

Cómo usar el comando fd en el sistema Linux

Cómo contar el número de archivos en un directorio en Linux

¿Cómo usar el comando xargs en Linux?

Cómo usar el comando which en Linux