解压 tarball 时创建目标目录

解压 tarball 时创建目标目录

是否可以创建一个目标目录,类似于mkdir -p,我可以在 tar 命令中定义一个不存在的目标目录,然后 tar 将为我创建该目录?

我知道我可以使用 将输出重定向到目录tar -C /target/dir,但如果目标目录不存在,则这不起作用。

答案1

mkdir -p /target/dir && tar -C /target/dir

答案2

tar -xvf bash.html_node.tar.gz --one-top-level

来自 tar 命令的手册页

--one-top-level[=DIR]

    将所有文件解压到目录,或者,如果不带参数使用,则进入由存档的基本名称命名的子目录(减去可识别的标准压缩后缀--auto-compress)。

- - - 测试

测试1

tar zxvf ../aaa.tgz --one-top-level
aaa/
aaa/222
aaa/111

tree aaa
aaa/
├── 111
└── 222

// 如果 tgz 名称与存档的 root_dir 相同,则没有其他影响

测试2

mv ../aaa.tgz ../bbb.tgz

tar zxvf ../bbb.tgz --one-top-level
aaa/
aaa/222
aaa/111

tree bbb
bbb
└── aaa
    ├── 111
    └── 222

// 如果 tgz 名称与存档的 root_dir 不同,则创建一个顶级目录

答案3

这对我来说更有意义:mkdir -p /create/folder && tar -zxf haroopad-v0.13.0_x64.tar.gz -C /create/testfolder

mkdir制作文件夹,尽管我不太明白这个-p开关。&&让您执行第二个命令。我使用了典型的 tar 开关,但最后-C用于更改目录并提取到所需的位置。

参考:将归档文件 tar-gz 中包含的文件提取到新目录命名归档文件

答案4

上述所有答案都有效 - 但如果 tar 内的内容位于目录内 - 它们将无法按您想要的方式工作:

所以这个简单的技巧对我有用:

tar -xvzf v<tarball>.tar.gz && mv ./<INSIDE_FOLDER> ./<NEW_FOLDER>

相关内容