xargs
Nos permite procesar parámetros como un filtro dándonos opciones muy potentes como procesar cierto número de parámetros y/o lanzar diferentes procesos en paralelo.
--max-args=max-args o -n max-args
: el número máximos de parámetros a utilizar.--max-procs=max-procs o -P max-procs
: número de procesos paralelos a ejecutar.Podemos usar el parámetro -P
para indicar cuantos procesos paralelos debe lanzar.
Por ejemplo vamos a contar palabras, letras y líneas de todos los ficheros de ayuda (man) con un solo proceso y con 20 procesos:
time find /usr/share/man/ | xargs -I ARG -P1 -n 1 wc -lmcw ARG > /dev/null 2>&1 real 0m7.672s user 0m0.188s sys 0m0.688s time find /usr/share/man/ | xargs -I ARG -P20 -n 1 wc -lmcw ARG > /dev/null 2>&1 real 0m2.853s user 0m0.076s sys 0m0.588s
Como vemos en el primer caso (un solo proceso) tarda 7,6 segundos y en el segundo caso (20 procesos) tarda 2.8 segundos.