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