在解压缩大型文件时,如何显示进度、栏或百分比?
unzip zipfile.zip
没有显示任何进度信息?
发布于 2017-10-03 18:03:21
在不安装任何其他东西的情况下,最简单的方法是让它为每个使用awk提取或处理的文件打印一个点。
unzip -o source.zip -d /destDirectory | awk 'BEGIN {ORS=" "} {print "."}'
如果它是一个很大的zip文件,那么您可以选择每10或20文件打印一个点,如下所示:
unzip -o source.zip -d /destDirectory | awk 'BEGIN {ORS=" "} {if(NR%10==0)print "."}'
只需将NR%10中的"10“更改为您想要的任何增量。
或者,您也可以安装pv命令,它在解压缩中不能很好地工作,但是提供了一个不完全糟糕的线性视图。
安装pv:
sudo apt install pv
用pv解压缩:
unzip -o source.zip -d /destDirectory | pv -l >/dev/null
这显示如下所示的输出:
28.2k 0:00:03 [9.36k/s] [ <=> ]
但是,由于压缩文件的处理方式,它不会像我们希望的那样以有意义的方式显示进度条。
发布于 2018-03-24 18:12:50
另一个显示zip/unzip进度的方法是使用7zip程序。在最新的16.02版(2016-05-21年出版)中,它以百分比显示了进展情况。
版本16.02的p7zip
包可以从artuful/16.10发布后在Ubutuntu存储库中获得。旧版本的Ubuntu只有9.20.1版的p7zip版本,存储库中没有进度指示器。我从仿生存储库中手动安装了Ubuntu /16.04中的pzip 16.02版本,似乎没有其他依赖项(p7zip、p7zip-full和p7zip-rar)。
7z x source.zip -o/destDirectory
请注意,"-o“和目标目录名称之间必须没有空格。
发布于 2022-10-09 05:56:15
您可能需要使用tqdm
,这是一个python库,但也有一个CLI,它将显示提取过程中的实际进展,而不仅仅是在完成所有操作之后:
unzip zipfile.zip | tqdm > /dev/null
显示进度百分比要困难得多,因为unzip
打印的行数尚不清楚。从unzip -l zipfile.zip
输出获取文件数是可能的:
n_files=`unzip -l zipfile.zip | tail -n 1 | xargs echo -n | cut -d' ' -f2`
然后你不妨:
unzip -o zipfile.zip | tqdm --desc extracted --unit files --unit_scale --total $n_files > /dev/null
最后产出:
extracted: 100%|███████████████████████████████| 15126/15126 [00:00<00:00, 16218.28files/s]
但解压缩输出的输出可能不仅是提取的文件名,还可能是其他一些操作(如充气或链接),这取决于may文件的内容。因此,n_files
确实包含正确的文件数量,但是步骤的数量可能更多。一旦tqdm
超过100%,它将切换到默认的进度输出,如上面的第一个示例所示。
Ubuntu名称当前为python3-tqdm
。当然,man tqdm
非常有用。
https://askubuntu.com/questions/909918
复制相似问题