Unix tar:不保留目录结构

17 unix shell tar

当我尝试tar使用绝对路径压缩文件和目录时,绝对路径将保留在生成的压缩文件中.我需要使用绝对路径来告诉tar我希望压缩的文件夹位于何处,但我只希望它压缩该文件夹 - 而不是整个路径.

例如,tar -cvzf test.tar.gz /home/path/test- 我要压缩文件夹的位置test.但是,我实际上最终压缩的是/home/path/test.有什么办法可以避免这种情况吗?我试过玩-C操作数无济于事.

小智 28

这很难看......但它有效......

我有同样的问题,但有多个文件夹,我只是想平掉每个文件.您可以使用选项"transform"来传递sed表达式......它可以按预期工作.

这是表达式:

's/.*\///g' (删除'/'之前的所有内容)

这是最后的命令:

tar --transform 's/.*\///g' -zcvf tarballName.tgz */*/*.info
Run Code Online (Sandbox Code Playgroud)

  • 这是我见过的唯一答案*实际上*正在寻找我正在寻找的东西. (6认同)

Mar*_*eed 21

使用-C指定的目录从这些文件看起来像你想,然后从该目录中看到指定的文件:

tar -cvzf test.tar.gz -C /home/path test
Run Code Online (Sandbox Code Playgroud)

  • 这仍然保留了相对于指定根目录的目录结构*相对*,这不是问题似乎要问的(尽管显然是 OP 需要的),但是 +1 因为这正是我正在寻找的(以及单边-另一个答案中的扁平化方法似乎是一件奇怪的事情)。 (2认同)