Display progress of data moved through a unix pipe (|) with pv


Examine the movement of data through a unix pipe (|) with the pv command. Results are displayed in time elapsed, total throughput, current Mb/s, etc.

In this example, we will take several GB of compressed log file data and process it with grep:

[jemurray@linux-host 2021-02-23]$ du -ach logfile.*
2.1G	logfile.00:00:00-01:00:00.log.gz
1.9G	logfile.01:00:00-02:00:00.log.gz
1.9G	logfile.02:00:00-03:00:00.log.gz
1.9G	logfile.03:00:00-04:00:00.log.gz
1.8G	logfile.04:00:00-05:00:00.log.gz
1.9G	logfile.05:00:00-06:00:00.log.gz
2.1G	logfile.06:00:00-07:00:00.log.gz
2.7G	logfile.07:00:00-08:00:00.log.gz
3.1G	logfile.08:00:00-09:00:00.log.gz
3.2G	logfile.09:00:00-10:00:00.log.gz
3.3G	logfile.10:00:00-11:00:00.log.gz
3.3G	logfile.11:00:00-12:00:00.log.gz
3.4G	logfile.12:00:00-13:00:00.log.gz
3.3G	logfile.13:00:00-14:00:00.log.gz
3.2G	logfile.14:00:00-15:00:00.log.gz
3.1G	logfile.15:00:00-16:00:00.log.gz
3.0G	logfile.16:00:00-17:00:00.log.gz
2.6G	logfile.17:00:00-18:00:00.log.gz
2.5G	logfile.18:00:00-19:00:00.log.gz
2.3G	logfile.19:00:00-20:00:00.log.gz
2.3G	logfile.20:00:00-21:00:00.log.gz
2.3G	logfile.21:00:00-22:00:00.log.gz
2.1G	logfile.22:00:00-23:00:00.log.gz
2.0G	logfile.23:00:00-00:00:00.log.gz
61G	total

pv outputs the total bytes, current data rate, and time elapsed:

[jemurray@linux-host 2021-02-23]$ zcat logfile.* | pv | grep exampletext
1.55GiB 0:00:16 [ 101MiB/s] [         <=>                                                                       ]