解凍するときにtarballのトップレベルフォルダの名前を変更するには?

解凍するときにtarballのトップレベルフォルダの名前を変更するには?

というフォルダを含むtar.gzアーカイブがある場合は、<somename>-<somenumber>それをフォルダに抽出するにはどうすればよいですか<somename>

たとえば、ファイルにはsomearchive.tar.gzトップレベルのフォルダが含まれており、somearchive-0.1.2次のように試しました。

tar xvfz somearchive.tar.gz --transform s/[a-zA-Z]+\-[0-9\.]+/somearchive/

ただし、これを行うとデフォルトフォルダに抽出されます。

答え1

Steeldriverが指摘したように、tar --transform拡張正規表現構文ではなく、基本正規表現構文を使用するsed代替式が必要です。特に「1つ以上」の演算子では\+ありません+。バラより 私の正規表現がXでは動作しますが、Yでは動作しないのはなぜですか?

tar xvfz somearchive.tar.gz --transform 's/^[a-zA-Z]\+-[0-9.]\+/somearchive/'

それとも、そうすることもできます。

tar xvfz somearchive.tar.gz --transform 's!^[^/]*!somearchive!'

答え2

Gilesの答えは私の質問と正確に一致しています。しかし、私はまた、次の選択肢を見つけました。

mkdir somearchive
tar xvfz somearchive.tar.gz --strip 1 -C somearchive

関連情報