如何在另一个目录中解压缩tar.gz

Mer*_*cer 258 unix gzip tar

我有一个档案

与*.tar.gz

如何在目标目录中解压缩?

Alf*_*lfe 307

如果您使用的是Gnu版本,可以使用该选项-C(或者--directory如果您更喜欢长选项)来提供您选择的目标目录tar.该目录应该存在:

mkdir foo
tar -xzf bar.tar.gz -C foo
Run Code Online (Sandbox Code Playgroud)

如果您没有使用tar能够解压缩到特定目录,则可以cd在调用之前简单地进入目标目录tar; 那么你必须提供一个完整的档案路径,当然.您可以在作用域子shell中执行此操作,以避免影响周围的脚本:

mkdir foo
(cd foo; tar -xzf ../bar.tar.gz)  # instead of ../ you can use an absolute path as well
Run Code Online (Sandbox Code Playgroud)

或者,如果绝对路径和归档文件的相对路径都不合适,您也可以使用它来命名范围子shell外的归档:

TARGET_PATH=a/very/complex/path/which/might/even/be/absolute
mkdir -p "$TARGET_PATH"
(cd "$TARGET_PATH"; tar -xzf -) < bar.tar.gz
Run Code Online (Sandbox Code Playgroud)


Mer*_*cer 105

gzip -dc archive.tar.gz | tar -xf - -C /destination
Run Code Online (Sandbox Code Playgroud)

或者,使用GNU tar

tar xzf archive.tar.gz -C /destination
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢使用`gzip`的概念,以防tar无法理解压缩档案. (3认同)