Eu tenho um comando <streaming ls> | wc -l
, funciona bem, mas <streaming ls>
demora um pouco, o que significa que não recebo a contagem final de linhas até alguns minutos depois.
Existe uma maneira de ter a saída de wc -l
atualização em tempo real?
Você não pode usar
wc -l
para isso, mas pode produzir uma contagem contínua de linhas vistas usando outras ferramentas, por exemplo AWK:Isso atualizará a contagem de linhas vistas sempre que uma linha for vista e terminará com o número total de linhas no final do processo.
Para comandos que produzem muita saída, a sobrecarga pode ser reduzida imprimindo a cada n linhas:
(para n = 10) ou imprimindo a cada segundo:
(ou a cada n segundos alterando a condição para
>= lasttime + n
).Você pode usar
pv
para fornecer algum relatório de progresso:-l
para baseado em linha (relata o número de linhas em vez de bytes).-b
para relatar os bytes numéricos (linhas bem aqui por causa de-l
)-t
para relatar o tempo gasto-r
para relatar a taxa atual (número de linhas por segundo; veja também-a
a taxa média).Cuidado, os nomes dos arquivos podem ser feitos de várias linhas, portanto,
wc -l
a saída dels
não é garantida para fornecer uma contagem de arquivos, a menos que você use opções como-b
ou-q
que escapem os caracteres de nova linha em nomes de arquivos como\n
ou?
.Bem, eu costumava usar algo como
watch -n 1 your command
, não tenho certeza se isso serve para o seu caso, eu não sou um guru, apenas a primeira coisa que me veio à mente.https://man7.org/linux/man-pages/man1/watch.1.html