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
Suculento
fonte

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 :)

Romeo Ninov
fonte
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'.

AB
fonte
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.

L. Austin
fonte
0

Isto é o que funciona para mim:

7z a zipped.zip ./rootDir/*

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

Marinos An
fonte