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}"
その後、シンボリックリンクを維持するか削除するかを決定できます。