首页 > 解决方案 > 如何指定 tar 最终结构

问题描述

我有这个结构:

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

如何在不重命名原始“发布”目录和/或创建新目录的情况下实现这一点。这是否可能仅在 tar 过程中实现?

谢谢

标签: linuxtar

解决方案


添加

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

到你的tar命令行。

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

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

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

tar在和的文档中阅读更多信息sed


推荐阅读