【问题标题】:MD5 progress output - BASHMD5 进度输出 - BASH
【发布时间】:2013-01-29 00:51:20
【问题描述】:

我正在编写一个简单的 MD5SUM 脚本。除了显示进度的部分(已计算给用户的文件的百分比)之外,它几乎完成了。我正在考虑使用带有虚拟变量的 while 循环来检查 MD5 是否已计算。唯一的问题是 md5sum(在 linux 上)不返回任何反馈,除非计算出实际的 md5sum。因此,很难向用户显示已处理了多少文件。这是脚本的副本。

#!/bin/bash

#MD5 verification tool
#1st argument is file name of .iso, and the 2nd argument is the the MD5 hexsum.

echo Checking file $1 .....  
#calc md5 for file
SUM=`md5sum $1`
#insert while loop here?
#compare values
test $SUM = $2 && echo original || echo False 

#8cd98b693ce542b671edecaed48ab06d8c
# GNOME-64.iso

exit 0

【问题讨论】:

  • 只要您依赖md5sum 命令,您将无法显示准确的进度消息。如果您想显示进度,请考虑使用 Python 等编程语言(使用哈希库)滚动您自己的 md5 哈希程序。
  • (也就是说,您可以通过在子shell中计时命令并比较文件大小来非常粗略地估计进度......但它不会接近准确。)
  • 当然可以,您只是测量正在消耗的数据,而不是 md5summing 的内部结构。

标签: bash md5sum


【解决方案1】:

使用pv,可安装在所有主要发行版上。 SUM=$(pv "$1" | md5sum) 将显示一个包含吞吐量和所有内容的漂亮进度条,例如:

bash> pv /media/secondary/backups/2013_01_12/* | md5sum
10.2GB 0:01:32 [ 115MB/s] [====>                 ] 19% ETA 0:06:21

【讨论】:

  • 哇,这太棒了!不得不在 Debian 上使用 apt 来降低它,但它非常方便。 +1,如果我有权代表 Logical 接受它,我会:-)
  • 谢谢帕克斯! pv 真的很不错。我正在编写代码,以便只显示统计栏而不显示所有额外信息。只是出于好奇,您知道在比较文件时使用 bash 显示旋转 *(星号)的方法吗?
猜你喜欢
  • 2020-03-12
  • 2011-03-24
  • 2013-04-15
  • 2021-10-20
  • 2018-03-03
  • 2010-12-12
  • 2012-07-17
  • 1970-01-01
  • 2014-12-16
相关资源
最近更新 更多