Compacte o conteúdo de uma pasta sem incluir a própria pasta


78

Eu tenho um diretório chamado folderque se parece com isso:

folder
      -> root_folder
                    -> some files

Quero compactar este diretório zipped_dir, tentei:

zip -r zipped_dir.zip folder/*

Mas isso gera um ZIP que se parece com isso:

zipped_dir
          -> folder
                   -> root_folder
                                 -> some files

em outras palavras, está incluindo o diretório cujo conteúdo eu quero compactar. Como posso excluir esse diretório pai do ZIP, sem mover nada?

Ou seja, eu gostaria deste resultado final:

zipped_dir
          -> root_folder
                        -> some files

Respostas:


75

Tente usar este comando (você entenderá)

cd folder; zip -r ../zipped_dir.zip *

Talvez exista outra maneira, mas isso é mais rápido e mais simples para mim :)


2
isso funciona perfeitamente fazendo esse truque. nota: ele fará a chroot .
loretoparisi

equivalente:zip -r zipped_dir.zip folder/*
Tobias Kolb 12/09

5
@TobiasKolb, talvez você não leia a pergunta. O OP não deseja ter uma pasta no caminho armazenado no zip.
Romeo Ninov 12/09

2
Parece que a única maneira de fazer
Robert

1
@PabloDiaz, no meu exemplo cd -, fará o trabalho (apenas um comando) :) Oucd ..
Romeo Ninov

30

Use -j; por exemplo:zip -r -j zipped_dir.zip folder/*

Ele não compactará 'root_folder'.


7
Eu recebo um erro com este caso tenha dois arquivos com o mesmo nome.
Chris

11
O OP provavelmente deseja que apenas o diretório pai seja removido, nem todos.
tokland

Ainda cria diretórios zip -r -j package.zip ./dist/static/*torna a estrutura do arquivodist/static/myfiels
deathangel908

4
também achatam os arquivos de diretório filho.
Sumit Ramteke

3
a -jopção elimina todas as informações do diretório e salva apenas os arquivos. Ou seja, para armazenar todos os arquivos em um diretório de forma "simples".
Robert

5
zip -r -D zipped.zip *

-D instrui o zip a não criar diretórios.


0

Isto é o que funciona para mim:

7z a zipped.zip ./rootDir/*

Ele criará um ziparquivo com raiz: qualquer arquivo / diretório dentro rootDir.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.