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

发布于 2024-09-04 03:38:25 字数 225 浏览 7 评论 0原文

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

tar -xf tar123.tar.gz 将解压缩文件,但与我所在的目录相同 如果文件名是“tar233.tar.gz” ,

我希望将其解压缩到 /myunzip/tar233.tar.gz”,因此目标目录将基于文件名。

有谁知道 tar 命令是否可以做到这一点?

I would like to untar an archive e.g. "tar123.tar.gz" to directory /myunzip/tar123/" using a shell command.

tar -xf tar123.tar.gz will decompress the files but in the same directory as where I'm working in.

If the filename would be "tar233.tar.gz" I want it to be decompressed to /myunzip/tar233.tar.gz" so destination directory would be based on the filename.

Does anyone know if the tar command can do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

野鹿林 2024-09-11 03:38:25
tar -xzvf filename.tar.gz -C destination_directory
tar -xzvf filename.tar.gz -C destination_directory
毁虫ゝ 2024-09-11 03:38:25

对于 Bash 和 GNU tar:

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

With Bash and GNU tar:

file=tar123.tar.gz
dir=/myunzip/${file%.tar.gz}
mkdir -p $dir
tar -C $dir -xzf $file
奢望 2024-09-11 03:38:25

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

You can change directory before extracting with the -C flag, but the directory has to exist already. (If you create file-specific directories, I strongly recommend against calling them foo.tar.gz - the extension implies that it's an archive file but it's actually a directory. That will lead to confusion.)

君勿笑 2024-09-11 03:38:25

尝试

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" 这将导致它在解压之前更改为目录。但上面的代码即使使用青铜时代的 tar 也应该可以工作。

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

Try

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 - ) )

If you're using GNU tar you can also give it an option -C "$dir" which will cause it to change to the directory before extracting. But the code above should work even with a Bronze Age tar.

Disclaimer: none of the code above has been tested.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文