Estoy usando xargs para ejecutar un comando en un conjunto de parámetros de entrada algo como esto:
cat <someinput> | xargs -n 1 -P 5 <somecmd>
El archivo de entrada es realmente largo y tarda mucho en ejecutarse. Así que solo estoy esperando que aparezca el símbolo del sistema. ¿Hay alguna manera de mostrar una barra de progreso para el número de argumentos de entrada que se han completado?
Intenté usar 'bar' pero siempre obtuve un rendimiento 'infinito'. Parece que xargs lee toda la entrada antes de ejecutar comandos.
fuente
Puedes usar pv:
Con esto sabrá dónde está la lectura de alguna entrada , de modo que sabrá aproximadamente dónde está el tratamiento de alguna entrada .
fuente
FIND=( find "$DIR" -type f ) && ${FIND[@]} -print0 | pv -0lps $(${FIND[@]} | wc -l) | xargs -0 -I {} -P 5 <somecmd>
Si está buscando solo una indicación general de progreso, el método más simple es hacer eco antes de hacer el comando que le gustaría hacer.
Ejemplo:
cat <someinput> | xargs -I{} sh -c 'echo {}; <somecmd>;'
-I{}
se establece{}
en la cadena actual que se está procesandosh -c
le permitirá ejecutar múltiples comandos (nota: punto y coma después de que se requiera cada comando, incluido el último) .fuente