Estou usando o xargs para executar um comando em um conjunto de parâmetros de entrada, algo como isto:
cat <someinput> | xargs -n 1 -P 5 <somecmd>
O arquivo de entrada é muito longo e leva muito tempo para ser executado. Então, eu estou apenas esperando o prompt de comando aparecer. Existe uma maneira de exibir uma barra de progresso para o número de argumentos de entrada que foram concluídos?
Tentei usar 'bar', mas sempre obtive um rendimento 'infinito'. Parece que o xargs lê toda a entrada antes de executar os comandos.
fonte
Você pode usar o pv:
Com isso, você saberá onde está a leitura de alguma imputação , assim saberá aproximadamente onde está o tratamento de alguma imputada .
fonte
FIND=( find "$DIR" -type f ) && ${FIND[@]} -print0 | pv -0lps $(${FIND[@]} | wc -l) | xargs -0 -I {} -P 5 <somecmd>
Se você está procurando apenas uma indicação geral do progresso, o método mais simples é ecoar antes de executar o comando que você deseja executar.
Exemplo:
cat <someinput> | xargs -I{} sh -c 'echo {}; <somecmd>;'
-I{}
define{}
a cadeia atual que está sendo processadash -c
permitirá que você execute vários comandos (nota: ponto e vírgula após cada comando ser necessário, incluindo o último .fonte