Zip le contenu d'un dossier sans inclure le dossier lui-même

78

J'ai un répertoire appelé folderqui ressemble à ceci:

folder
      -> root_folder
                    -> some files

Je veux compresser ce répertoire zipped_dir, j'ai essayé:

zip -r zipped_dir.zip folder/*

Mais cela génère un ZIP qui ressemble à ceci:

zipped_dir
          -> folder
                   -> root_folder
                                 -> some files

en d'autres termes, cela inclut le répertoire dont je veux compresser le contenu. Comment puis-je exclure ce répertoire parent du ZIP sans rien déplacer?

IE je voudrais ce résultat final:

zipped_dir
          -> root_folder
                        -> some files
Juteux
la source

Réponses:

75

Essayez d'utiliser cette commande (vous aurez l'idée)

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

Peut-être y a-t-il un autre moyen, mais c'est le plus rapide et le plus simple pour moi :)

Romeo Ninov
la source
2
cela fonctionne parfaitement en faisant ce tour. note: ça va faire un chroot .
loretoparisi
équivalent:zip -r zipped_dir.zip folder/*
Tobias Kolb
5
@TobiasKolb, peut-être que vous ne lisez pas la question. OP ne veut pas avoir de dossier dans le chemin enregistré dans zip.
Romeo Ninov
2
Semble la seule façon de faire
Robert
1
@PabloDiaz, dans mon exemple cd -fera le travail (une seule commande) :) Oucd ..
Romeo Ninov
31

Utilisation -j; par exemple:zip -r -j zipped_dir.zip folder/*

Cela ne compressera pas 'root_folder'.

UN B
la source
7
Je reçois une erreur avec celui-ci si j'ai deux fichiers du même nom.
Chris
11
OP veut probablement que seul le répertoire parent soit supprimé, pas tous.
tokland
Encore crée des répertoires zip -r -j package.zip ./dist/static/*rend la structure des archivesdist/static/myfiels
deathangel908
4
il aplatit également les fichiers du répertoire enfant.
Sumit Ramteke
3
l' -joption élimine toutes les informations de répertoire et ne sauvegarde que les fichiers. C'est-à-dire, pour stocker tous les fichiers dans un répertoire d'une manière "plate".
Robert
5
zip -r -D zipped.zip *

-D indique à zip de ne pas créer de répertoires.

L. Austin
la source
0

C'est ce qui fonctionne pour moi:

7z a zipped.zip ./rootDir/*

Cela créera une ziparchive avec root: tous les fichiers / répertoires à l'intérieur rootDir.

Marinos An
la source