将filename.tr.gz解压缩到目录“filename”

时间:2010-06-01 14:16:49

标签: shell tar

我想解压档案,例如“tar123.tar.gz”到目录/ myunzip / tar123 /“使用shell命令。

tar -xf tar123.tar.gz将解压缩文件,但与我工作的目录位于同一目录。

如果文件名为“tar233.tar.gz”,我希望将其解压缩到/myunzip/tar233.tar.gz“所以目标目录将基于文件名。

有人知道tar命令是否可以这样做吗?

4 个答案:

答案 0 :(得分:34)

tar -xzvf filename.tar.gz -C destination_directory

答案 1 :(得分:33)

使用Bash和GNU tar:

file=tar123.tar.gz
dir=/myunzip/${file%.tar.gz}
mkdir -p $dir
tar -C $dir -xzf $file

答案 2 :(得分:4)

您可以在使用-C标志解压缩之前更改目录,但该目录必须已存在。 (如果您创建特定于文件的目录,我强烈建议您不要调用它们foo.tar.gz - 扩展名意味着它是一个存档文件,但它实际上是一个目录。导致混淆。)< / p>

答案 3 :(得分:2)

尝试

file=tar123.tar.gz
dir=/myunzip/$(basename $file .tar.gz)   # matter of taste and custom here
[ -d "$dir" ] && { echo "$dir already exists" >&2; exit 1; }
mkdir "$dir" && ( gzip -d "$file | ( cd "$dir" && tar xf - ) )

如果你正在使用GNU tar,你也可以给它一个选项-C "$dir",这将导致它在解压缩之前更改为目录。但是上面的代码甚至可以使用青铜时代焦油。

免责声明:上述代码均未经过测试。