如何指定 tar 最终结构

How to specify the tar final structure

我有这样的结构:

release/folder1/file1
release/folder2/file2
...
release/folderN/fileN

我想将所有这些文件夹(folder1、folder2 ... folderN)包含在一个 tar 文件中。 关键是我希望这些文件夹位于另一个名为 MYAPP 的目录中的最终 tar 中,因此当您打开 tar 时,您可以看到:

MYAPP/folder1/file1
MYAPP/folder2/file2
...
MYAPP/folderN/fileN

如何在不重命名原始 "release" 目录 and/or 创建新目录的情况下实现此目的。 这有可能仅在 tar 过程中实现吗?

谢谢

添加

--transform=s@^release/@MYAPP/@

到您的 tar 命令行。

--transform命令行的参数是一个命令,与文件路径一起传递给sed,然后将其存储在存档中(使用tar -tf显示存档中存储的文件的名称)。

命令s@^release/@MYAPP/@告诉sed在字符串(^)的开头搜索(s)release/并替换为MYAPP/ .

需要搜索和替换字符串末尾的 / 以确保组件的完整名称是 release(而不是替换 release.txt)。 @ 字符只是一个正则表达式分隔符。通常 / 用作正则表达式分隔符,但我们更喜欢在这里使用不同的分隔符以避免需要转义 /(因为它用于搜索和替换字符串)。

tar and sed 的文档中阅读更多内容。