![使用管道查看器解压缩](https://linux22.com/image/1059193/%E4%BD%BF%E7%94%A8%E7%AE%A1%E9%81%93%E6%9F%A5%E7%9C%8B%E5%99%A8%E8%A7%A3%E5%8E%8B%E7%BC%A9.png)
我正在尝试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/