我们如何从大型tar.gz文件中提取特定文件?我在此问题中找到了从tar中提取文件的过程,但是,当我在其中尝试上述命令时,出现了错误:
$ tar --extract --file={test.tar.gz} {extract11}
tar: {test.tar.gz}: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
然后如何从中提取文件tar.gz
?
我们如何从大型tar.gz文件中提取特定文件?我在此问题中找到了从tar中提取文件的过程,但是,当我在其中尝试上述命令时,出现了错误:
$ tar --extract --file={test.tar.gz} {extract11}
tar: {test.tar.gz}: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
然后如何从中提取文件tar.gz
?
Answers:
您也可以使用 tar -zxvf <tar filename> <file you want to extract>
您必须正确tar ztf test.tar.gz
显示文件名。如果显示例如./extract11
,或some/bunch/of/dirs/extract11
,那就是您要提供的(文件将以该名称显示,将自动创建所需的目录)。
-x
:指示tar解压缩文件。-f
:指定文件名/压缩包名称。-v
:详细(提取文件时显示进度)。-z
:通过gzip过滤归档文件,用于解压缩.gz文件。$ tar -zxvf test.tar.gz extract11
tar: extract11: Not found in archive
tar: Error exit delayed from previous errors
tar tf archive.tar.gz | grep extract11
请检查
tar ztf test.tar.gz
显示文件名。如果显示例如./extract11
,或some/bunch/of/dirs/extract11
,那就是您要提供的(文件将以该名称显示,将自动创建所需的目录)。
-z
选项在某些版本的UNIX(例如HP-UX)中不起作用。
f
不能以结尾结尾。但必须紧随其后的是文件名。此示例与tar名称后面的所有其他选项一起正常运行:tar -f mytar.tar.gz -zxv dir/somefile
。它从“ mytar.tar.gz”中提取“ dir / somefile”。
假设您有一个名为tar的tar,lotsofdata.tar.gz
并且只知道其中有一个文件,但您所能记住的只是它的名称包含单词contract
。您有两种选择:
您可以使用tar
和grep
列出tarball的内容,以便找出与您所知道的部分相匹配的所有文件的完整路径和名称,然后在您知道tar
一个文件的确切详细信息之后用于提取该文件,或者您可以使用两个文件鲜为人知的开关仅提取与您鲜为人知的文件名相匹配的所有文件-您无需知道此选项的全名或路径的任何部分。详细信息是:
选项1
$ tar -tzf lotsofdata.tar.gz | grep contract
这将列出名称中包含您已知部分的所有文件的详细信息。然后,使用以下命令提取所需内容:
$ tar -xzf lotsofdata.tar.gz <full path and filename from your list above>
您可能需要./
先行一步才能使其正常工作。
选项2
$ tar -xzf lotsofdata.tar.gz --wildcards --no-anchored '*contract*'
取决于您,您会发现更容易或最有用。
tar -xzf lotsofdata.tar.gz <full path and filename from your list above>
在./
全路径开始时为我工作并给予了帮助
--wildcards
选项。我仍然可以与取得类似的行为-x -O *foo
。 *foo
在我的情况下是文件名glob,因为我知道文件以foo结尾。
如果省略括号,您的示例对我有用
$ tar --extract --file=test.tar.gz extract11
如果文件extract11在子文件夹中,则应在tarball中指定路径。
$ tar --extract --file=test.tar.gz subfolder/extract11
$ tar --extract --file=test.tar.gz extract11
tar: extract11: Not found in archive
tar: Error exit delayed from previous errors