というフォルダを含む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