web-dev-qa-db-fra.com

Ligne de commande Zip tout dans un répertoire, mais n'incluez aucun répertoire comme racine

Je ne trouve pas la réponse à cela pour la vie de moi. Parce que j'empaquette un Zip d'une manière spécifique pour un processus de construction, je ne veux pas du tout inclure un dossier dans le Zip résultant à la racine. Par exemple, si j'ai ce chemin de fichier:

MyFolder/
    A.png
    B.txt
    C.mp3

Et j'utilise soit la commande:

Zip -r -X "MyFolder.Zip" MyFolder/*

ou

cd MyFolder; Zip -r -X "../MyFolder.Zip" *

Je me retrouve avec un fichier Zip qui a l'élément racine de MyFolder. Ce que je veux, c'est que lorsque je le décompresse, c'est pour tout vider directement dans le répertoire, comme ceci:

A.png
B.txt
C.mp3

En d'autres termes, je ne veux pas MyFolder ou tout autre dossier comme racine. J'ai lu tout le manuel et j'ai essayé de nombreuses options et beaucoup de recherches sur Google, et Zip semble juste vraiment vouloir avoir un dossier à la racine.

Merci!

29
Eli

C'était la faute d'Archive Utility (une application de décompression de Mac OS X). Lorsque j'ai utilisé la commande de décompression de la ligne de commande, cela fonctionne très bien.

cd MyFolder; Zip -r -X "../MyFolder.Zip" *
39
Eli

Je suis tombé sur cette réponse mais je ne voulais pas avoir à changer de répertoire. J'ai trouvé le -j option utile qui ajoute tous les fichiers à la racine du Zip. Notez que sa valeur est tous les fichiers donc la structure du sous-répertoire ne sera pas conservée.

Donc, avec cette structure de dossiers:

MyFolder
 - MyFile1
 - MySubFolder
   - MyFile2

Et cette commande:

Zip -rj MyFolder.Zip MyFolder

Vous obtenez ceci:

MyFolder.Zip
 - MyFile1
 - MyFile2
8
Jonny