Извлечь файл из файла xz

У меня огромный файл file.tar.xz содержит много текстовых файлов меньшего размера с похожей структурой. Я хочу быстро изучить файл из сжатого файла и получить представление о структуре содержимого файлов. У меня нет информации об именах файлов в сжатом файле. Есть ли способ извлечь один файл из приведенного выше сценария?

Спасибо.

РЕДАКТИРОВАТЬ: я не хочу tar -xvf file.tar.xz,

1 ответ

Решение

Основываясь на обсуждении в комментариях, я попробовал следующее, которое сработало для меня. Возможно, это не самое оптимальное решение, регулярное выражение может нуждаться в некотором улучшении, но вы поймете идею.

Сначала я создал демонстрационный архив:

cd /tmp
mkdir demo
for i in {1..100}; do echo $i > "demo/$i.txt"; done
cd demo && tar cfJ ../demo.tar.xz * && cd ..

demo.tar.xz теперь содержит 100 текстовых файлов.

Ниже приводится список содержимого архива, выбирается первый файл и сохраняется путь в архиве в переменную. firstfile:

 firstfile=`tar -tvf demo.tar.xz | grep -Po  -m1  "(?<=:[0-9]{2} ).*$"`

echo $firstfile будет выводить 1.txt,

Теперь вы можете извлечь этот единственный файл из архива:

tar xf demo.tar.xz $firstfile
Другие вопросы по тегам