Korzystam z xargs, aby wykonać polecenie na zestawie parametrów wejściowych mniej więcej tak:
cat <someinput> | xargs -n 1 -P 5 <somecmd>
Plik wejściowy jest naprawdę długi i jego uruchomienie zajmuje dużo czasu. Czekam więc, aż pojawi się wiersz polecenia. Czy istnieje sposób wyświetlenia paska postępu dla liczby zakończonych argumentów wejściowych?
Próbowałem użyć „bar”, ale zawsze otrzymałem „nieskończoną” przepustowość. Wygląda na to, że xargs odczytuje całe dane wejściowe przed wykonaniem poleceń.
źródło
Możesz użyć pv:
Dzięki temu będziesz wiedział, gdzie znajduje się odczyt pewnej ilości , więc będziesz wiedział w przybliżeniu, gdzie jest leczenie pewnej ilości .
źródło
FIND=( find "$DIR" -type f ) && ${FIND[@]} -print0 | pv -0lps $(${FIND[@]} | wc -l) | xargs -0 -I {} -P 5 <somecmd>
Jeśli szukasz tylko ogólnego wskazania postępu, najprostszą metodą jest echo przed wykonaniem polecenia, które chcesz wykonać.
Przykład:
cat <someinput> | xargs -I{} sh -c 'echo {}; <somecmd>;'
-I{}
ustawia{}
aktualnie przetwarzany ciągsh -c
pozwoli na wykonanie wielu poleceń (uwaga: średnik po każdym poleceniu jest wymagany, w tym ostatnim .źródło