解压管道顺序

解压管道顺序

我有一个文件 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

相关内容