tar 创建存档重命名根目录

tar 创建存档重命名根目录

我正在尝试创建 tar 存档并重命名存档中的根目录。例如我有这些文件:

$ tree ./repo
./repo
├── 1
├── 2
└── 3
0 directories, 3 files

我想创建repo-v1.0.0.tar.gz具有以下文件结构的存档:

./repo-v1.0.0
├── 1
├── 2
└── 3

现在我正在使用丑陋的解决方法:

mv "${repo}" ${repo}-${version}"
tar -cvzf "${repo}-${version}.tar.gz" "${repo}-${version}"
mv "${repo}-${version}" "${repo}"

是否可以使用命令本身重命名存档中的根目录tar

答案1

tar有一个--transform选择。你可以打电话

tar --transform "s/repo/repo-v1.0.0/" -cvzf repo.tar.gz repo/

答案2

据我所知,Tar 不会重命名。但是您可以使用符号链接执行更简单的解决方法:

ln -s "${repo}" ${repo}-${version}"
tar --dereference -cvzf "${repo}-${version}.tar.gz" "${repo}-${version}"

然后您可以决定保留符号链接或删除它。

相关内容