많은 디렉토리, 파일 등을 포함하는 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/file
file
bsdtar
zip
tar
-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/