![解压管道顺序](https://linux22.com/image/645248/%E8%A7%A3%E5%8E%8B%E7%AE%A1%E9%81%93%E9%A1%BA%E5%BA%8F.png)
我有一个文件 foo.zip,如下所示:
foo.zip
-- fileA.txt
-- fileB.txt
我可以像这样通过管道传输提取的文件的输出:
unzip -p foo.zip *.txt | something
我的问题是我想确保文件的顺序正确,例如 fileA.txt 在 fileB.txt 之前被提取和传输。
我可以以某种方式做到这一点,同时又避免将文件临时写入磁盘吗?
答案1
顺序应该与 zip 相同。因此,如果您可以控制 zip 过程,那么您可以按自己喜欢的顺序添加文件,解压应该会按该顺序进行。
如果您不自己进行压缩,那么您必须将它们解压缩到文件系统并重新排序,因为没有简单的方法来对它们进行排序。
如果你真的想避免创建临时文件,你可以使用类似
unzip -l -qq foo.zip | awk '{print $4}'
获取内容,按你喜欢的方式对文件名进行排序,然后逐个解压。
答案2
有很多应该和可能. 如果你想成为当然分别提取它们并将它们放在一起。
cat `unzip -p foo.zip fileA.txt` `unzip -p foo.zip fileB.txt` ... | something