Como insiro uma pasta em um arquivo ZIP?

2

Sou novato no Linux e tive que fazer algo assim com o comando zip:

Minha estrutura de pastas dentro de um arquivo zip abc.zip é:

-- currentdir
  -- onestepdeep
     -- abc.zip
       -- folder1
         -- textfile.txt
       -- folder2
  -- seconddir
    -- folder3 
      -- textfile.txt

Eu preciso copiar o arquivo textfile.txt do seconddir/folder3 para folder1 dentro de abc.zip

Eu posso mover textfile.txt para abc.zip com os seguintes resultados:

  1. Passaria para abc.zip as folder3/textfile.txt (a hierarquia preservada)
  2. Também usou uma opção -j (a ajuda disse que junked as informações do caminho e o fez, mas) - moveria apenas para abc.zip e ficaria no mesmo nível de folder1 e folder2 em vez de substituir o textfile.txt dentro de abc.zip/folder1

Minha pergunta é: quero substituir o abc.zip/folder1/textfile.txt pelo que está dentro de seconddir/folder3/textfile.txt .

Como faço para isso através da interface de linha de comando?

    
por zarun 11.08.2011 / 22:15

3 respostas

1

Eu sempre rolo com alcatrão ...

tar -cjf destination_archive_file.tar.bz2 /path/to/directory/to/archive

Isso daria a você um arquivo 'destination_archive_file.tar.bz2' com todo o conteúdo dentro de '/ path / to / directory / to / archive' armazenado.

Então, para extrair, basta usar:

tar -xjvf destination_archive_file.tar.bz2

Enfim, eu sei que você pediu descaradamente pelo zip, não pelo tar. Eu tentei zip algumas vezes e achei que fosse um pouco contra-intuitivo. Nunca me preocupei em realmente descobrir isso desde que eu tinha acabado de usar alcatrão e continuar com isso. Se você precisar extrair um tar no Windows, 7-zip ou winrar deve fazer o truque. Tenho certeza que o OSX suporta nativamente.

    
por 11.08.2011 / 22:21
1

Eu também uso o tar, mas se você precisar de zip, então:

zip -b path/to/create/in zipfile.zip textfile.txt

    
por 11.08.2011 / 22:35
1

Talvez instale fuse-zip , que é uma ferramenta muito conveniente. O seguinte comando:

fuse-zip abc.zip abc.mnt

mostrará o conteúdo de abc.zip em um diretório abc.mnt . Então faça o que quiser com o conteúdo do diretório:

cp -r ../seconddir/folder3 abc.mnt/

Depois disso, desmonte o diretório:

fusermount -u abc.mnt; rm -rf abc.mnt

Você terminou.

    
por 12.08.2011 / 00:47