我在终端中创建了一个 tar 文件。假设我当前位于目录 test7 中。我正在当前目录中创建一个位于另一个目录 (test8) 中的文件的 tar。
tar -czvf example.tgz ../test8/a/b
输出:
example.tgz
现在,我使用以下命令解压此文件:
tar -xzvf example.tgz
我得到了结果和一个名为的目录测试8被生产。
$) cd test8
$) ls
-> a
$) cd a
$) ls
-> b
现在我可以进入目录了b并查看我的文件。
我希望输出仅是目录A并且里面b将会出现,即我想要的解压后的输出应该是这个层次结构:
a/b
但不是:test8/a/b
有人能帮我解决这个问题吗?我浏览过 tar 的手册页,但没有得到太多帮助。
答案1
您可以使用该-C
选项有效地更改到目标目录
例如,而不是
$ tar cvf example.tar ../Apple/Banana/Papaya
tar: Removing leading `../' from member names
../Apple/Banana/Papaya/
../Apple/Banana/Papaya/Papaya.md
使用
$ tar cvf example.tar -C ../Apple Banana/Papaya
Banana/Papaya/
Banana/Papaya/Papaya.md
或者,您可以使用以下选项在提取时删除主要目录--strip-components
:
tar --strip-components=1 -xzvf example.tgz