여러 개의 zip 파일을 단일 디렉터리 구조로 압축 해제하는 방법(예: Google 드라이브 폴더 내보내기)

여러 개의 zip 파일을 단일 디렉터리 구조로 압축 해제하는 방법(예: Google 드라이브 폴더 내보내기)

A다음 구조의 압축되지 않은 디렉토리로 시작했다고 가정합니다 .

$ tree A
A
└── inner_dir
    ├── file1.txt
    └── file2.txt

1 directory, 2 files

이제 두 개의 zip 파일 이 제공 1.zip되고 . 만 포함 하고 다음만 포함합니다 .2.zipA1.zipfile1.txt2.zipfile2.txt

# -l flag simply lists file contents

$ unzip -l 1.zip 
Archive:  1.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2017-09-30 21:49   A/
        0  2017-09-30 22:27   A/inner_dir/
        0  2017-09-30 21:49   A/inner_dir/file1.txt
---------                     -------
        0                     3 files

$ unzip -l 2.zip 
Archive:  2.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2017-09-30 21:49   A/
        0  2017-09-30 22:27   A/inner_dir/
        0  2017-09-30 22:27   A/inner_dir/file2.txt
---------                     -------
        0                     3 files

A의 조합에서 압축이 풀린 원본 디렉터리를 프로그래밍 방식으로 재구성하려면 어떤 명령을 사용할 수 있습니까 ?1.zip2.zip

문맥:Google 드라이브에서 큰 디렉토리를 내보낼 때 콘텐츠는 2개 이상의 zip 파일 세트로 분할됩니다. 각 zip 파일에는 파일의 일부 하위 집합이 포함되어 있으며, 집합적으로 사용하면 원래 디렉터리를 재구성합니다. zip이 다소 무작위로 나타나는 파일이 포함되어 있습니다. 정확히 2개 파일의 특별한 경우뿐만 아니라 n > 1 zip 파일로 일반화하는 솔루션을 찾고 있습니다.

답변1

압축을 풀려는 파일 세트를 전용 디렉토리로 이동한 후 다음을 사용하십시오 unzip.

$ unzip '*.zip' -d combined

Archive:  1.zip
   creating: combined/A/
   creating: combined/A/inner_dir/
 extracting: combined/A/inner_dir/file1.txt  

Archive:  2.zip
 extracting: combined/A/inner_dir/file2.txt  

2 archives were successfully processed.

확인하다:

$ tree combined
combined
└── A
    └── inner_dir
        ├── file1.txt
        └── file2.txt

2 directories, 2 files

답변2

@lcharbon 문제는 zip이 비표준 인코딩을 처리하는 방식에 있습니다.

이 문제를 더 잘 처리하는 p7zip을 사용하면 문제를 해결할 수 있습니다.

p7zip을 사용하는 아날로그 명령은 다음과 같습니다.

7z x '*.zip' -ocombined

brew install p7zipLinux에서는 Brew 또는 배포판 패키지 관리자를 사용하여 Mac에 p7zip을 설치할 수 있습니다 .

관련 정보