Solaris에서 특정 폴더의 내용 압축 풀기

Solaris에서 특정 폴더의 내용 압축 풀기

zip 파일의 특정 폴더 내용을 압축해제하려고 합니다. 내 zip 파일 구조는 다음과 같습니다.

  • 폴더 1
    • 폴더1_1
    • 파일 1_1
  • 폴더 2
  • 폴더 3
  • 파일 1
  • 파일 2

난 그냥 압축을 풀고 싶어콘텐츠폴더 1의

나는 다음을 사용하려고합니다 :

unzip -d path_to_unzip/ results.zip 'folder1/*'

불행히도 다음과 같은 구조가 생성됩니다.

path_to_unzip/folder1/folder_1_1 등...

불필요한 폴더를 삭제하기 위해 보관하는 방법 1?

미리 감사드립니다!

답변1

불필요한 폴더를 삭제하기 위해 보관하는 방법 1?

Ignacio가 올바르게 지적했듯이 unzip그렇지 않습니다.

나는 이것을 제안하고 싶습니다 :

TMPDIR=`mktemp -d` || exit 1
unzip -d ${TMPDIR}/ results.zip 'folder1/*'
mv ${TMPDIR}/folder1/* path_to_unzip/
rm -r ${TMPDIR}

기본적으로 단일 파일 시스템의 파일 작업은 원자적이므로, 즉 "거의" 즉시 수행되므로 대상 경로와 동일한 파일 시스템에 있는 mv한 성능에 실제 영향은 없습니다 . /tmp그렇지 않고 ZIP 파일이 큰 경우 대상 파일 시스템의 임시 폴더에 압축을 풀어야 합니다. 여기서는 대상 디렉터리의 상위 디렉터리를 얻습니다.

TMPDIR=`mktemp -p path_to_unzip/.. -d` || exit 1

관련 정보