A
다음 구조의 압축되지 않은 디렉토리로 시작했다고 가정합니다 .
$ tree A
A
└── inner_dir
├── file1.txt
└── file2.txt
1 directory, 2 files
이제 두 개의 zip 파일 이 제공 1.zip
되고 . 만 포함 하고 다음만 포함합니다 .2.zip
A
1.zip
file1.txt
2.zip
file2.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.zip
2.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 p7zip
Linux에서는 Brew 또는 배포판 패키지 관리자를 사용하여 Mac에 p7zip을 설치할 수 있습니다 .