这不起作用:
tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive
对我来说,除了将其提取到位并移动文件之外,还不清楚做什么。
答案1
从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在这方面基本相同,请参阅其手册中的“更改工作目录”)
答案2
如果您想在其他地方提取 tar 存档光盘到目标目录并在那里解压它:
mkdir -p foo/bar
cd foo/bar
tar xzvf /tmp/foo.tar.gz
foo/bar
您使用的命令将搜索存档中的文件并将其解压缩。
答案3
正在做:
(cd foo/bar ; tar xf /tmp/foo.tar.gz )
会做的工作。
基本上,它的作用是生成一个新的 shell(括号),在这个子 shell 中,将目录更改为foo/bar
,然后解压缩文件。
;
您可以通过 a更改&&
以确保cd
工作正常。
答案4
更改要解压的目录
cd /u02/restore
如果解压文件位于 /u01/backup.tar 下,则
摘录如下:
cd /u02/restore
tar -xvf /u01/backup.tar