从 xz 文件中提取文件

Posted

技术标签:

【中文标题】从 xz 文件中提取文件【英文标题】:extract a file from xz file 【发布时间】:2015-04-23 11:47:47 【问题描述】:

我有一个巨大的文件file.tar.xz,其中包含许多具有相似结构的较小文本文件。我想从压缩文件中快速检查一个文件并了解文件内容结构。我没有关于压缩文件中文件名称的信息。鉴于上述情况,是否有提取单个文件的方法?

谢谢。

编辑:我不想tar -xvf file.tar.xz

【问题讨论】:

用什么解压?贝壳? C? 如果可能的话,使用 bash tar 您是否已经知道要从存档中提取的文件的路径/名称? 我知道路径但不知道文件名 你怎么知道要提取什么?我不知道你想达到什么目标,你应该提供一个更详细的例子来说明你的问题。 【参考方案1】:

根据 cmets 中的讨论,我尝试了以下对我有用的方法。它可能不是最佳解决方案,正则表达式可能需要一些改进,但您会明白的。

我首先创建了一个演示存档:

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 个 txt 文件。

下面列出存档的内容,选择第一个文件并将存档中的路径存储到变量firstfile中:

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

echo $firstfile 将输出1.txt

您现在可以从存档中提取此单个文件:

tar xf demo.tar.xz $firstfile

【讨论】:

不,它对我不起作用。 echo $firstfile 什么也不吐,当我删除 " . echo $firstfile 之间的空格时,echo $firstfile 持有一个值,但我 tar 它我得到文件 Not found in archive 错误。尝试从硬盘驱动器中的五个文件中创建一个随机存档,并查看该方法是否可转移。不过还是谢谢。 @TadeleT:我更新了正则表达式,为我工作了各种文件。

以上是关于从 xz 文件中提取文件的主要内容,如果未能解决你的问题,请参考以下文章

在python中提取xz文件

无法使用 python 提取 .xz 文件“tarfile.ReadError:文件无法成功打开”

Ubuntu 18.04:无法使用单个命令提取下载的 tar.xz 文件

是否可以在 golang 中提取 tar.xz 包?

为 ubuntu 10.04 LTS 提取 tar.xz 和 tar.lz 的 gnutls 库文件

使用 XZ Java for android 获取提取百分比