如何使用tar解压缩到其他目录?


18

这不起作用:

tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive

对我来说,除了将其提取到位并移动文件外,还没有什么能做的。

Answers:


28

来自man tar

     -C directory
         In c and r mode, this changes the directory before adding the
         following files.  In x mode, change directories after opening the
         archive but before extracting entries from the archive.

tar xC /foo/bar -f /tmp/foo.tar.gz应该做的工作。(在FreeBSD上,但是GNU tar在这方面基本相同,请参见其手册中的“更改工作目录”


4
我建议使用非GNU版本的tar测试此行为。Solaris手册页仅在添加替换操作的组合中提及此选项。很好奇,我已经用提取操作对其进行了测试。Solaris的焦油没有发出任何错误或警告,并提取=存档当前文件夹: - /
KTF

1
在AIX版本的tar上也不起作用:“文件-C在归档文件中不存在”-“ -C”确实可以创建tarball。
DarkHeart 2015年

是否可以用新名称换出主目录?
tofutim

9

如果要提取其他位置的tar存档,只需将cd压缩到目标目录并在其中解压缩即可:

 mkdir -p foo/bar
 cd foo/bar
 tar xzvf /tmp/foo.tar.gz

您使用的命令将foo/bar在存档中搜索文件并将其解压缩。


9

正在做:

(cd foo/bar ; tar xf /tmp/foo.tar.gz )

会做的工作。

基本上,该操作是在该子外壳中生成一个新的外壳(括号),将目录更改为foo/bar然后解压缩该文件。

您可以更改;通过&&,以确保该cd工程的罚款。


1
哇,您可以像这样启动外壳真是太酷了!我不知道你能做到这一点。
Kit Sunde

0
tar -xf ancd.tar.gz my/name/file

您可以./file在tar文件后加上文件名。

tar -xf ancd.tar.gz ./my/name/file

如果它有效,则表示您已使用创建了一个tar ./。使用less命令查看tar内容。

less ...tar.file  

0

我遇到了一个类似的问题,并已解决。

问题在于文件创建而不是创建的文件。

尝试tar并在目录A中传输文件时,我在tar命令中提供了原始文件的路径

tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*

我能够解决的是

cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*

在传输和解压缩tarball时,将创建所需的子目录。

tar -xvf MyFile.tar

0

更改要提取的目录

cd /u02/restore

如果解压缩文件位于/u01/backup.tar下,则

提取如下:

cd /u02/restore
tar -xvf /u01/backup.tar

0

命令:

tar -xzvf foo.tar.gz -C /home/user/bar/

/home/user/bar在打印处理后的文件时将输入文件“ foo.tar.gz”提取到目录中。

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.