使用 tar 提取文件夹内容?

使用 tar 提取文件夹内容?

有一个类似的问题在这里

如果我理解正确的话,第一个答案表明我们无法提取文件夹的内容,而只能提取文件夹中的特定文件?

第二个答案使用该--directory选项。这看起来正是我想要的,但是这不会从存档中的某个目录中提取文件,而是将文件输出到选项指示的目录--directory

当我压缩文件夹 tar 时,包含了从根目录开始的整个路径。所以它有home/ole/folder/thestuff。我想解压folder/thestuff到当前所在的文件夹中,但不包含home/ole.

想法?

答案1

如果我理解正确的话,第一个答案表明我们无法提取文件夹的内容,而只能提取文件夹中的特定文件?

不,它谈论的是相对文件名与绝对文件名。/some/path和之间的区别some/path

查看 tarfile 的内容tar tf file/path/to/folder当文件夹列为 时,您不能将其指定为path/to/folder

提供(正确的)文件夹来提取是没有问题的。

  • 列出将要提取的文件

tar tf file.tar path/to/folder

  • 解压文件(到当前目录)

tar xf file.tar path/to/folder

举个例子:

检查内容:

$ tar tf ../test.tar
a/
a/3
a/2
a/1
b/
b/3
b/2
b/1

解压文件夹a

$ tar xf ../test.tar a

看看它提取了什么

$ find .
.
./a
./a/3
./a/2
./a/1

答案2

就我而言,我可以这样做:

tar -xvzf archive.tar.gz --strip-components=2

这将从home/ole路径中删除,并将存档中低于该路径的所有内容提取到当前目录中。

相关内容