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}"

その後、シンボリックリンクを維持するか削除するかを決定できます。

関連情報