J'utilise xargs pour exécuter une commande sur un ensemble de paramètres d'entrée quelque chose comme ceci:
cat <someinput> | xargs -n 1 -P 5 <somecmd>
Le fichier d'entrée est vraiment long et prend beaucoup de temps à s'exécuter. J'attends donc que l'invite de commande apparaisse. Existe-t-il un moyen d'afficher une barre de progression pour le nombre d'arguments d'entrée terminés?
J'ai essayé d'utiliser «bar» mais j'ai toujours eu un débit «infini». Il semble que xargs lit l'intégralité de l'entrée avant d'exécuter des commandes.
la source
Vous pouvez utiliser pv:
Avec cela, vous saurez où se trouve la lecture de certains entrées , vous saurez donc approximativement où se trouve le traitement de certaines entrées .
la source
FIND=( find "$DIR" -type f ) && ${FIND[@]} -print0 | pv -0lps $(${FIND[@]} | wc -l) | xargs -0 -I {} -P 5 <somecmd>
Si vous cherchez juste une indication générale des progrès, la méthode la plus simple consiste à simplement faire écho avant de faire la commande que vous souhaitez faire.
Exemple:
cat <someinput> | xargs -I{} sh -c 'echo {}; <somecmd>;'
-I{}
définit{}
la chaîne en cours de traitementsh -c
vous permettra d'exécuter plusieurs commandes (note: point-virgule après chaque commande est requise, y compris la dernière .la source