237 votes

Mac zip compressé sans dossier __MACOSX ?

Lorsque je compresse des fichiers avec le compresseur zip intégré de Mac OSX, un dossier supplémentaire intitulé "__MACOSX" est créé dans le fichier zip extrait.

Puis-je ajuster mes paramètres pour empêcher la création de ce dossier ou dois-je acheter un outil de compression tiers ?

UPDATE : Je viens de trouver une application gratuite pour OSX qui résout mon problème : " YemuZip "

MISE À JOUR 2 : YemuZip n'est plus un freeware

0 votes

L'existence du dossier _MACOSX ne crée aucun problème. Il suffit de le supprimer.

3 votes

Cette question semble être hors sujet car elle devrait se trouver dans AskDifferent.

22 votes

Cela crée un problème avec les services web pointilleux qui exigent une archive zip impeccable. Je vous remercie donc pour les explications.

392voto

Chris Johnson Points 2887

Peut être réparé après coup par zip -d filename.zip __MACOSX/\*

63 votes

Pour supprimer également les fichiers .DS_Store : zip -d filename.zip \*/.DS_Store

11 votes

La réponse acceptée explique comment ne pas obtenir le répertoire __MACOSX/ en premier lieu, mais ne dit rien sur ce qu'il faut faire avec un fichier .zip existant. Cette réponse indique comment se débarrasser de __MACOSX/ si vous l'avez déjà. Cependant, la question originale était de savoir comment ne pas l'obtenir en premier lieu, donc la réponse acceptée est la bonne.

0 votes

Comment puis-je faire cela récursivement pour tous les fichiers zip ?

124voto

sinuhepop Points 7075

Quand j'ai eu ce problème, je l'ai fait en ligne de commande :

zip file.zip uncompressed

EDIT après de nombreux downvotes : J'utilisais cette option depuis un certain temps déjà et je ne sais pas où je l'ai apprise, je ne peux donc pas vous donner une meilleure explication. Chris Johnson responder est correcte, mais je ne supprimerai pas la mienne. Comme le dit un commentaire, cela correspond mieux à la demande de l'OP, car il compresse sans ces fichiers, au lieu de les supprimer d'un fichier compressé. Je trouve aussi que c'est plus facile à retenir.

37 votes

Cela manque d'explication.

6 votes

Le sous-répertoire __MACOSX/ contient les fourches des ressources Mac et est créé lorsque vous utilisez les outils Mac pour créer le fichier zip. De même, les outils Mac consommeront le sous-répertoire __MACOSX/ afin de définir les fourches de ressources, et vous ne le verrez même pas. Cependant, si vous utilisez les outils Mac pour créer le fichier zip et d'autres outils pour le décompresser, vous obtiendrez le répertoire __MACOSX/ et non les fourches de ressources. Si vous créez le fichier avec zip qui est une application tierce, le répertoire __MACOSX/ n'est jamais créé en premier lieu.

0 votes

Voir ma réponse pour un moyen facile de supprimer le dossier _MACOSX après la création du fichier zip.

92voto

pompalini Points 69

Dans le dossier que vous voulez compresser, dans le terminal :

zip -r -X Archive.zip *

Où -X signifie : Exclure les fichiers de ressources Mac invisibles tels que "_MACOSX" ou "._Filename" et les fichiers de stockage .ds.

source

Nota: ne fonctionnera que pour le dossier et l'arborescence de dossiers subséquente dans lesquels vous vous trouvez et doit avoir l'attribut * joker.

11 votes

Cela ne fonctionne pas comme vous le pensez : -X n'exclut pas les fichiers .DS_Store. La raison pour laquelle cela peut fonctionner pour votre application est que vous ne zippez que les fichiers .DS_Store. * qui est un joker correspondant aux fichiers qui ne commencent pas par ".". Essayez-le sur un répertoire contenant un fichier point, et vous verrez qu'il est inclus.

0 votes

Voir ma réponse pour un moyen facile de supprimer le dossier _MACOSX après la création du fichier zip.

1 votes

Non. Faisant zip -r -X Archive.zip myfolder sur un dossier donne toujours lieu à un fichier zip contenant le fichier .DS_Store.

44voto

Adil Hussain Points 3542

Cette commande l'a fait pour moi :

zip -r Target.zip Source -x "*.DS_Store"

Target.zip est le fichier zip à créer. Source est le fichier/dossier source à compresser. Et le _x spécifie le fichier/dossier à ne pas inclure. Si l'option ci-dessus ne fonctionne pas pour une raison quelconque, essayez ceci à la place :

zip -r Target.zip Source -x "*.DS_Store" -x "__MACOSX"

0 votes

Le PO a demandé comment exclure le dossier __MACOSX. Votre premier extrait de code ne fonctionne évidemment pas, car il ne le désigne pas comme un dossier à exclure.

9 votes

El zip ne crée jamais un fichier __MACOSX donc le premier extrait fonctionne, et le -x "__MACOSX" n'est pas nécessaire.

1voto

Ken Thomases Points 21131

Voulez-vous dire le zip ou la commande Compress du Finder ?

Pour zip vous pouvez essayer le --data-fork option. Si cela ne fonctionne pas, vous pouvez essayer les options suivantes --no-extra mais cela semble ignorer d'autres métadonnées de fichiers qui pourraient être précieuses, comme l'uid/gid et la durée des fichiers.

En ce qui concerne la commande Compress du Finder, je ne pense pas qu'il existe d'options permettant de contrôler son comportement. C'est pour le cas simple.

L'autre outil, et peut-être celui que le Finder utilise réellement sous le capot, est le suivant ditto . Avec le -c -k options, il crée des archives zip. Avec cet outil, vous pouvez expérimenter --norsrc , --noextattr , --noqtn , --noacl et/ou simplement laisser de côté le --sequesterRsrc (qui, d'après la page de manuel, peut être responsable de l'apparition de l'option __MACOSX sous-répertoire). Bien que, peut-être, l'absence de --sequesterRsrc signifie simplement utiliser le format AppleDouble, ce qui créerait des fichiers ._ partout au lieu d'un seul. __MACOSX répertoire.

1 votes

Oui, je fais référence à l'utilitaire "Compresser" du Finder. En l'état actuel des choses, j'obtiens un dossier rempli de fichiers ._, ce qui perturbe l'apparence de WordPress et de son éditeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X