shell - Unix tar : do not preserve full pathnames

标签 shell unix tar

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

例如,tar -cvzf test.tar.gz/home/path/test – 我想在其中压缩文件夹test。然而,我实际上最终压缩的是/home/path/test。有什么办法可以避免这种情况吗?我尝试使用 -C 操作数但无济于事。

最佳答案

这很丑......但它有效......

我也遇到了同样的问题,但对于多个文件夹,我只想将每个文件展平。您可以使用选项“transform”来传递 sed 表达式......它按预期工作。

这是表达式:

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

这是最终命令:

tar --transform 's/.*\///g' -zcvf tarballName.tgz */*/*.info

关于shell - Unix tar : do not preserve full pathnames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924856/

相关文章:

java - 在 junit 测试中比较 tar 存档的最佳方法是什么

bash - 可以执行二进制文件,但不能使用 "source"

bash - 在 bash 中合并多个参数扩展操作

unix - UNIX 中具有相似文件名的重复文件

c++ - 带有命令行参数的 C++ Makefile 和 Bash 脚本

linux - 在 Bash 中以不同的频率运行两个操作

php - 允许通过 PHP 访问 protected 文件

linux - 从 Linux 中的所有文件名中删除括号

bash - 在 Makefile 中使用 shell 参数扩展

http-headers - TAR文件的正确MIME媒体类型