Rog*_*ger 24 bash wget unzip xargs
有关如何解压缩管道zip文件的任何想法,如下所示:
wget -qO- http://downloads.wordpress.org/plugin/akismet.2.5.3.zip
Run Code Online (Sandbox Code Playgroud)
我希望将文件解压缩到一个目录,就像我们以前使用普通文件一样:
wget -qO- http://downloads.wordpress.org/plugin/akismet.2.5.3.zip | unzip -d ~/Desktop
Run Code Online (Sandbox Code Playgroud)
rua*_*rio 32
ZIP文件格式包括存档末尾的目录(索引).该目录说明每个文件所在的归档中的位置,因此允许快速随机访问,而无需读取整个归档.
在尝试通过管道读取ZIP存档时,这似乎会出现问题,因为直到最后才访问索引,因此在完全读取文件并且不再可用之前,无法正确提取单个成员.因此,当通过管道提供存档时,大多数ZIP解压缩器都会失败,这似乎不足为奇.
存档末尾的目录不是文件元信息存储在存档中的唯一位置.此外,出于冗余目的,各个条目还将此信息包含在本地文件头中.
虽然并非每个ZIP解压缩程序在索引不可用时都会使用本地文件头,但tar和cpio前端到libarchive(又名bsdtar和bsdcpio)可以并且将在读取管道时这样做,这意味着以下是可能的:
wget -qO- http://downloads.wordpress.org/plugin/akismet.2.5.3.zip | bsdtar -xvf- -C ~/Desktop
Run Code Online (Sandbox Code Playgroud)
Saf*_*ver 13
BusyBoxunzip可以使用标准输入并提取所有文件。
wget -qO- http://downloads.wordpress.org/plugin/akismet.2.5.3.zip | busybox unzip -
Run Code Online (Sandbox Code Playgroud)
后面的破折号unzip是使用 stdin 作为输入。
你甚至可以,
cat file.zip | busybox unzip -
Run Code Online (Sandbox Code Playgroud)
但这只是多余的unzip file.zip。
如果您的发行版默认使用 BusyBox(例如 Alpine),只需运行unzip -.
leo*_*eon 10
__CODE__
虽然以下内容在bash中不起作用,但它可以在zsh中使用.由于许多zsh用户可能会在这里结束,因此它可能仍然有用:
unzip =( wget -qO- http://downloads.wordpress.org/plugin/akismet.2.5.3.zip )
Run Code Online (Sandbox Code Playgroud)
我会看一下 funzip (http://www.info-zip.org/mans/funzip.html)。它的手册页指出,
...filter for extracting from a ZIP archive in a pipe
Run Code Online (Sandbox Code Playgroud)
抱歉,我没有示例,但看起来它确实带有 Linux 解压缩实用程序。
只需使用zcat
wget -qO- http://downloads.wordpress.org/plugin/akismet.2.5.3.zip | zcat >> myfile.txt
Run Code Online (Sandbox Code Playgroud)