파일 내용의 압축을 풀지만 보관 폴더는 만들지 않습니다.

파일 내용의 압축을 풀지만 보관 폴더는 만들지 않습니다.

많은 디렉토리, 파일 등을 포함하는 myarchive.zip 파일이 있습니다. 이 myarchive.zip 파일이 "b"라는 디렉터리에 있다고 가정합니다. "unzip myarchive.zip" 명령을 사용하면 기본적으로 시스템은 zip 파일의 내용을 포함하는 "myarchive"라는 디렉터리를 생성합니다. 그래요아니요시스템이 이 "myarchive" 디렉터리를 생성하기를 원합니다. "b" 디렉터리에 내용을 추출하고 싶습니다. 가능합니까?

지금 내가 하는 일은 "cp" 명령을 실행하여 새로 생성된 디렉터리(이 경우 "myarchive"에서 "b"로)에서 원하는 위치로 파일을 복사하는 것뿐입니다.

답변1

내 버전에는 디렉터리를 생성하지 않는 옵션이 unzip있습니다 .-j

그래서

unzip -j /path/to/file.zip

파일에 저장된 디렉터리 구조를 복원하지 않고 모든 파일이 현재 디렉터리로 추출됩니다 zip.

아카이브에서 한 수준의 디렉터리만 제거하려는 경우( 대신 myarchive/dir/file으로 추출 ) (파일 외에 파일 지원 ) 및 해당 옵션을 사용할 수 있습니다.dir/filefilebsdtarziptar-s

bsdtar -xf /path/to/file.zip -s'|[^/]*/||'

답변2

정말 간단해 보이는데bsdtar:

bsdtar --strip-components=1 -xvf file.zip

답변3

귀하의 질문에서 말씀하신 것처럼 허용된 답변은 이를 수행하는 방법을 지정하지 않습니다. zip 파일에 저장된 폴더 경로를 사용하지 않고 특정 폴더로 추출하려는 경우 다음과 같이 -j옵션과 함께 옵션을 사용할 수 있습니다 -d.

unzip -j /path/to/file.zip -d other_folder

아니면 당신의 상황에 맞게

unzip -j myarchive.zip -d b

답변4

b이미 해당 디렉토리 에 있다고 가정합니다 .

tar zxvf myarchive.zip --strip-components=1

그렇지 않으면:

tar zxvf b/myarchive.zip --strip-components=1 -C b/

관련 정보