Tar
解壓時如何重命名 tarball 中的頂級文件夾?
如果我有一個 tar.gz 存檔,其中包含一個名為 like 的文件夾
<somename>-<somenumber>
,我如何將其解壓縮到一個名為的文件夾中<somename>
?例如,該文件
somearchive.tar.gz
包含一個頂級文件夾somearchive-0.1.2
,我嘗試了類似:tar xvfz somearchive.tar.gz --transform s/[a-zA-Z]+\-[0-9\.]+/somearchive/
但這會將其提取到預設文件夾中。
正如 steeldriver 指出的那樣,
tar --transform
需要一個 sed 替換錶達式,它使用基本的正則表達式語法,而不是擴展的正則表達式語法,特別是“一個或多個”運算符 is\+
, not+
。請參閱 為什麼我的正則表達式在 X 中有效但在 Y 中無效?tar xvfz somearchive.tar.gz --transform 's/^[a-zA-Z]\+-[0-9.]\+/somearchive/'
或者你可以簡單地做
tar xvfz somearchive.tar.gz --transform 's!^[^/]*!somearchive!'
吉爾斯的回答完全符合我的問題。但是,我也發現這種替代方法也有效:
mkdir somearchive tar xvfz somearchive.tar.gz --strip 1 -C somearchive