有一个类似的问题在这里。
如果我理解正确的话,第一个答案表明我们无法提取文件夹的内容,而只能提取文件夹中的特定文件?
第二个答案使用该--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
路径中删除,并将存档中低于该路径的所有内容提取到当前目录中。