Answers:
您正在寻找的是以下-C
选项:
$ man tar
<snip>
-C, --directory DIR
change to directory DIR
用法,按您的示例:
$ tar xvzf archivename.tar.gz -C /tmp/testdir/ sampledir/
另外,您可能想知道现代版本的tar
不需要z
标志来解压缩gzip文件。他们会注意到这是.gz
“自动执行正确的操作”。
您无需花费一切就可以玩疯狂的游戏。Tar完全支持仅提取归档文件中的一部分文件,如以下(简单的)示例所示:
/tmp $ mkdir tarsrc
/tmp $ cd tarsrc
/tmp/tarsrc $ mkdir a b
/tmp/tarsrc $ touch a/aaa b/bbb
/tmp/tarsrc $ tar cf ../tartest.tar .
/tmp/tarsrc $ cd ..
/tmp $ mkdir tardest
/tmp $ cd tardest
/tmp/tardest $ tar xf ../tartest.tar ./a
/tmp/tardest $ ls -R
.:
a/
./a:
aaa
诀窍在于,pathspec必须与tarfile的内容完全匹配。因此,当您执行时tar tf
,如果路径以开头./
,则必须将其放入,而如果没有,则必须将其省略。另外,如果要提取子-子-子-子-子-子-子路径,则完成后,它将在文件系统深处达到N级。
-C
选项为tar。