Ligne de commande zip tout dans un répertoire, mais ne pas inclure n'importe quel répertoire comme la racine

Je ne trouve pas la réponse à cela pour ma vie. 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'ai utiliser la commande:

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

ou

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

je finis avec un fichier zip qui a l'élément racine de MyFolder. Ce que je veux, c'est pour quand je décompressez-le, est de jeter tout droit dans la 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 ont essayé de nombreuses options et beaucoup de recherche sur Google, et zip semble juste vraiment voulez avoir un dossier à la racine.

Merci!

26
demandé sur Eli 2014-07-03 04:37:09

2 réponses

c'était la faute d'un utilitaire D'Archives (une application Mac OS X unzipper). Lorsque j'ai utilisé la commande unzip de la ligne de commande, cela fonctionne très bien.

cd MyFolder; zip -r -X "../MyFolder.zip" *
29
répondu Eli 2014-07-03 17:50:55

est tombé sur cette réponse mais ne voulait pas avoir à changer dans hors des annuaires. J'ai trouvé l' -j option utile qui ajoute tous les fichiers à la racine du zip. Notez que le son est tous les fichiers ainsi la structure du sous-répertoire ne sera pas préservée.

donc avec cette structure de dossier:

MyFolder
 - MyFile1
 - MySubFolder
   - MyFile2

Et cette commande:

zip -rj MyFolder.zip MyFolder

Vous obtenez ceci:

MyFolder.zip
 - MyFile1
 - MyFile2
8
répondu Jonny 2016-03-19 06:14:33