Como descompactar vários arquivos zip em uma única estrutura de diretório (por exemplo, exportação de pasta do Google Drive)

1

Suponha que você começou com um diretório descompactado A , com a seguinte estrutura:

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

1 directory, 2 files

Agora, suponha que você recebeu dois arquivos zip 1.zip e 2.zip derivados de A . 1.zip contém apenas file1.txt e 2.zip contém apenas 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

Qual comando posso usar para reconfigurar programaticamente o diretório original descompactado A da combinação de 1.zip e 2.zip ?

Contexto: ao exportar um diretório grande do Google Drive, o conteúdo é dividido em um conjunto de 2 ou mais arquivos zip. Cada arquivo zip contém algum subconjunto dos arquivos, que, quando coletados coletivamente, reconstituem o diretório original. Quais arquivos são contém em que zip parece ser mais ou menos aleatório. Eu estou procurando uma solução que generaliza para n > 1 arquivos zip, não apenas o caso especial de exatamente 2 arquivos.

    
por Bryce Thomas 01.10.2017 / 07:42

1 resposta

1

Mova o conjunto de arquivos que você deseja descompactar para um diretório dedicado e, em seguida, use 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.

Verifique:

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

2 directories, 2 files
    
por 01.10.2017 / 07:42