Извлечь файл из файла 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