我正在尝试pv
在从 zip 存档中提取文件时使用管道查看器 ()。
现在我正在使用
unzip -o -q myfile.zip -d test
所以我尝试了类似的东西(tar 的解决方案)
pv myfile.zip | unzip -o -q - -d test
但它不起作用。正确的语法是什么?
答案1
问题的根源不在于语法,而在于 tar 和 zip 之间的内在差异。
通过管道提交 zip 文件的问题是基于拉链设计
目录位于 .ZIP 文件末尾。这将识别 .ZIP 中包含哪些文件,并识别该文件在 .ZIP 中的位置。这允许 .ZIP 阅读器加载文件列表,而无需读取整个 .ZIP 档案
当通过管道提供 zip 时 - 仅在管道提供整个文件后才会访问目录,因此pv
应在解压缩开始之前完成 - 这会导致您遇到的失败。
答案2
以bsdtar
通过管道使用 unzip 为例。例如:
$ sudo apt install libarchive-tools
$ wget -qO- https://dl.1001fonts.com/breitkopf-fraktur.zip |sudo bsdtar -xvf- -C /usr/local/share/fonts/