是否可以创建一个目标目录,类似于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
用于更改目录并提取到所需的位置。
答案4
上述所有答案都有效 - 但如果 tar 内的内容位于目录内 - 它们将无法按您想要的方式工作:
所以这个简单的技巧对我有用:
tar -xvzf v<tarball>.tar.gz && mv ./<INSIDE_FOLDER> ./<NEW_FOLDER>