如何使用7-Zip通过单条命令递归提取多层压缩文件
如何使用7-Zip通过单条命令递归提取多层压缩文件
你提到的链式命令确实需要提前知道每一层的文件名,还会生成中间压缩文件,有点麻烦。其实我们可以利用7-Zip的标准输入输出参数,用一条管道命令就能递归解压多层嵌套的压缩包,而且不需要知道中间文件名,也不会留下临时文件。
直接用这条命令就能一步到位提取出最终的database.sql:
7z e -so /path/to/example.7z | 7z e -si -o./
给你拆解下每个参数的作用:
-so:让第一个7-Zip命令将解压后的内容输出到标准输出(而不是保存成物理文件)|:管道符,把前一个命令的输出直接传递给后一个命令作为输入-si:让第二个7-Zip命令从标准输入读取要解压的内容-o./:指定最终文件的输出目录(这里是当前目录,你可以换成自己需要的具体路径)
如果你的嵌套压缩层数更多(比如还有第三层),只需要继续追加管道和7-Zip命令就行,比如:
7z e -so /path/to/example.7z | 7z e -si -so | 7z e -si -o./
另外,如果嵌套的是gz格式,你也可以用gzip来代替第二层的7-Zip命令,效果是一样的:
7z e -so /path/to/example.7z | gzip -d > database.sql
备注:内容来源于stack exchange,提问作者Nathan J.B.




