라는 폴더가 포함된 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 대체 표현식이 필요합니다. 특히 "하나 이상의" 연산자는 가 \+
아니라 입니다 +
. 바라보다
내 정규 표현식이 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