linux - 如何指定 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 过程中实现?
谢谢
解决方案
添加
--transform=s@^release/@MYAPP/@
到你的tar
命令行。
命令行的参数--transform
是一个命令,它sed
与文件路径一起传递给它,然后再存储到存档中(用于tar -tf
显示存储在存档中的文件的名称)。
该命令s@^release/@MYAPP/@
告诉 sed在字符串 () 的开头搜索 ( s
)并将其替换为.release/
^
MYAPP/
搜索和替换字符串末尾的/
需要确保组件的完整名称是release
(而不是替换release.txt
)。该@
字符只是一个正则表达式分隔符。通常/
用作正则表达式分隔符,但我们更喜欢在这里使用不同的分隔符以避免转义/
(因为它用于搜索和替换字符串)。
推荐阅读
- javascript - 在 Wordpress 中嵌入 Javasceipr 代码不起作用
- python - Django-channels daphne 不同的行为 WINDOWS - LINUX 使用 sync_to_async
- ansible - Ansible to_nice_json 带换行符
- chocolatey - 如何将安装的窗口终端升级为巧克力?
- salesforce - 为什么从 Salesforce 的缓存中检索对象时不调用字段设置器?
- python - 如何将断言并行化到不同的字典?
- java - Maven 全新安装/jar:jar
- reactjs - 如何在 DigitalOcean 上部署 ReactJS/Django 项目
- phpmailer - 如何使用 PHPMAILER 创建退订链接
- terraform - 如果已经不存在,则创建 terraform 资源(S3 存储桶对象)