我可以使用tar将特定文件夹提取到另一个文件夹吗?


14

我是Linux的新手,似乎遇到了绊脚石。我知道我可以使用命令来提取特定的档案,tar xvfz archivename.tar.gz sampledir/但是如何将档案提取sampledir/testdir/而不是路径中,例如当前档案在路径中,/tmp/archivename.tar.gz而我想提取sampledirtestdir路径中/tmp/testdir

Answers:


19

您正在寻找的是以下-C选项:

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

用法,按您的示例:

$ tar xvzf archivename.tar.gz -C /tmp/testdir/ sampledir/

另外,您可能想知道现代版本的tar不需要z标志来解压缩gzip文件。他们会注意到这是.gz“自动执行正确的操作”。


谢谢。有趣的是,在发布问题之前,我确实尝试过,但失败了。也许我错过了一个选择。我会再试一次。
PeanutsMonkey 2011年

光彩。对于大型档案,我总是会忘记这一点。
zmonteca

3

您无需花费一切就可以玩疯狂的游戏。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级。


谢谢womble。也许这不是正确的示例,但是我将tar与Winzip,WinRAR等进行了比较,可能tar是使用不正确的命令,但是看到我看到了tar解压缩gzip和bzip文件的示例,我希望我可以应用类似的过程,例如,选择要取消存档的文件(tar执行此操作),然后选择要提取到的路径(除非我位于特定目录中,否则tar不会执行此操作)。
PeanutsMonkey 2011年

然后,您希望该-C选项为tar。
womble
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.