Ich verwende xargs, um einen Befehl für eine Reihe von Eingabeparametern wie folgt auszuführen:
cat <someinput> | xargs -n 1 -P 5 <somecmd>
Die Eingabedatei ist sehr lang und die Ausführung dauert lange. Ich warte nur darauf, dass die Eingabeaufforderung angezeigt wird. Gibt es eine Möglichkeit, einen Fortschrittsbalken für die Anzahl der abgeschlossenen Eingabeargumente anzuzeigen?
Ich habe versucht, 'bar' zu verwenden, aber ich habe immer einen 'unendlichen' Durchsatz erhalten. Es scheint, als würde xargs die gesamte Eingabe lesen, bevor Befehle ausgeführt werden.
quelle
Sie können pv verwenden:
Damit wissen Sie, wo sich das Lesen eines Imputs befindet, sodass Sie ungefähr wissen, wo sich die Behandlung eines Imputs befindet.
quelle
FIND=( find "$DIR" -type f ) && ${FIND[@]} -print0 | pv -0lps $(${FIND[@]} | wc -l) | xargs -0 -I {} -P 5 <somecmd>
Wenn Sie nur nach einem allgemeinen Hinweis auf den Fortschritt suchen, ist es am einfachsten, vor dem Ausführen des gewünschten Befehls nur ein Echo zu senden.
Beispiel:
cat <someinput> | xargs -I{} sh -c 'echo {}; <somecmd>;'
-I{}
wird{}
auf die aktuell verarbeitete Zeichenfolge gesetztsh -c
Mit dieser Option können Sie mehrere Befehle ausführen (Hinweis: Semikolon, nachdem jeder Befehl erforderlich ist, einschließlich des letzten .quelle