У меня есть файл, foo.zip, который выглядит примерно так:
foo.zip
-- fileA.txt
-- fileB.txt
Я могу передать вывод по каналу извлеченных файлов как это:
unzip -p foo.zip *.txt | something
Моя проблема состоит в том, что я хочу удостовериться, что файлы в правильном порядке, например, что fileA.txt извлечен и передан по каналу перед fileB.txt.
Я могу сделать это в некотором роде и все еще постараться не писать файлы временно в диск?
Ордер должен быть таким же, как и zip. Так что если вы можете контролировать процесс zip, то вы можете заказать добавление файлов по своему усмотрению и распаковать их в таком порядке.
Если вы не сделаете zip самостоятельно, то вам придется распаковать их в файловую систему и переупорядочить, так как есть непростой способ заказать их.
Если вы действительно хотите избежать создания временных файлов, вы можете использовать что-то вроде
unzip -l -qq foo.zip | awk '{print $4}'
чтобы получить содержимое, отсортировать имена файлов по своему усмотрению, а затем распаковать их один за другим.
.Много shoulds и cans . Если вы хотите быть уверены извлечь их по отдельности и котировать их вместе.
cat `unzip -p foo.zip fileA.txt` `unzip -p foo.zip fileB.txt` ... | something