我有一个命令<streaming ls> | wc -l
,它工作正常,但<streaming ls>
需要一段时间,这意味着直到几分钟后我才能得到最终的行数。
wc -l
有没有办法可以实时得到 update 的输出?
Ste*_*itt 33
您可以\xe2\x80\x99t 用于wc -l
此目的,但您可以生成使用其他工具(例如 AWK)看到的行的运行计数:
<streaming ls> | awk '{ printf "%d\\r", NR } END { print NR }'\n
Run Code Online (Sandbox Code Playgroud)\n这将更新每次看到一行时看到的行数,并在进程结束时以总行数结束。
\n对于产生大量输出的命令,可以通过每n行打印来减少开销:
\n\xe2\x80\xa6 | awk 'NR % 10 == 0 { printf "%d\\r", NR } END { print NR }'\n
Run Code Online (Sandbox Code Playgroud)\n(对于n = 10)或每秒打印一次:
\n\xe2\x80\xa6 | awk 'systime() > lasttime { lasttime = systime(); printf "%d\\r", NR } END { print NR }'\n
Run Code Online (Sandbox Code Playgroud)\n(或每n秒将条件更改为>= lasttime + n
)。
Sté*_*las 25
您可以用来pv
给您一些进度报告:
cmd | pv -lbtr | wc -l
Run Code Online (Sandbox Code Playgroud)
-l
基于行(报告行数而不是字节数)。-b
报告字节数(这里有行,因为-l
)-t
报告所花费的时间-r
报告当前速率(每秒行数;另请参阅-a
平均速率)。请注意,文件名可以由多行组成,因此 的wc -l
输出ls
不能保证为您提供文件计数,除非您使用-b
或 等选项-q
将文件名中的换行符转义为\n
或?
。
归档时间: |
|
查看次数: |
3129 次 |
最近记录: |