我正在尝试创建 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}"
然后您可以决定保留符号链接或删除它。