Ohne .DS_Store und __MACOSX komprimieren

Wenn ich einen Ordner oder eine Datei über das Rechtsklickmenü von Mac OS X komprimiere, enthält die archivierte Datei die Ordner .DS_Store und __MACOSX . Da ich die archivierte Datei online zum Herunterladen freigebe, versuchen Windows-Benutzer fälschlicherweise, die Datei im Ordner __MACOSX zu suchen .

Ich brauche eine sauberere Archivoption. Ich möchte keine .DS_Store- und __MACOSX- Ordner, sondern nur die Datei oder den Ordner in die Archivdatei aufnehmen.

Alles, was ich gefunden habe, ist CleanArchiver , aber es ist eine GUI-Anwendung. Es braucht wirklich Zeit und ich muss viele Dateien komprimieren. Ich suche wenn möglich per Kontextmenü nach einer Lösung.

Gibt es eine Lösung, die Sie für sauberes Komprimieren empfehlen können?

In meinem Fall habe ich die Dateien für die Verwendung in Cloud Functions in GCP gepackt. Die versteckten Dateien verursachen Fehler

Antworten (5)

Sie können den Befehl zip im Terminal verwenden , um die Dateien ohne die .DS_Store, __MACOSXund andere .*Dateien zu komprimieren.

  1. Terminal öffnen (nach Terminal im Rampenlicht suchen)
  2. Navigieren Sie mit dem cdBefehl zu dem Ordner, den Sie komprimieren möchten
  3. Fügen Sie dies ein:
    zip -r dir.zip . -x ".*" -x "__MACOSX"
    

Beispiel

Angenommen, Sie haben auf Ihrem Desktop einen Ordner mit dem Namen FolderSachen zum Komprimieren.
Öffnen Sie das Terminal und schreiben Sie die folgenden Befehle:

  1. cd Desktop/Folder
    
  2. zip -r dir.zip . -x ".*" -x "__MACOSX"
    

Jetzt haben Sie eine Datei namens dir.zipwithout __MACOSXund .*files im Ordner Folderauf Ihrem Desktop.

+1 Können Sie das in einen Automatisierungsdienst einpacken?
Technisch gesehen wird zip"__MACOSX/" beim Erstellen der ZIP-Datei gar nicht erst erstellt, also brauchen Sie eigentlich nur zip -r dir.zip .. Wenn sich jedoch "__MACOSX/" irgendwie dort eingeschlichen hat, wird Ihre Lösung es los.
Sie können auch leicht überprüfen, ob Ihre ZIP-Datei __MACOSX nicht enthält, indem Sie in die Konsole eingebenzipinfo dir.zip
Das sieht so aus, als würde es alle Dateien ausschließen, die mit einem Punkt beginnen, nicht nur .ds_store? Habe ich recht?
@somnolentsurfer Das ist richtig.

Nur ein paar zusätzliche Informationen ...

Mein Verständnis ist, dass __MACOSX ein Unterverzeichnis ist, das künstlich von den Mac-GUI-Tools erstellt wurde, um Metadaten wie erweiterte Attribute zu speichern, die normalerweise nicht in einer Zip-Datei gespeichert werden können.

Wenn Sie die Mac-GUI-Tools zum Entpacken der Zip-Datei verwenden, wissen die Tools, was mit __MACOSX zu tun ist, und das Verzeichnis wird nicht wirklich entpackt.

Die Probleme treten auf, wenn Sie Ihre .zip-Datei an Windows- oder Linux-Benutzer senden oder einfach das Allzweckprogramm unzipzum Entpacken verwenden. Diese Tools wissen nicht, dass __MACOSX etwas Besonderes ist, und entpacken es einfach.

Die einfachste Option besteht darin, zipanstelle des in Mac integrierten Tools Ihre ZIP-Datei zu packen. zipwird __MACOSX nicht erstellen und Ihr Problem ist gelöst. (Sie werden dabei die Metadaten verlieren, aber Sie wollten sie wahrscheinlich sowieso nicht.)

zip -r dir.zip dir

Wenn es zu spät ist und Sie bereits eine ZIP-Datei mit __MACOSX haben, können Sie sie immer noch entfernen mit:

zip -d foo.zip __MACOSX .DS_Store

Schließlich ist die akzeptierte Antwort die beste, denn wenn __MACOSX aus irgendeinem Grund tatsächlich in Ihrem Verzeichnis existiert (z. B. weil Sie es zuvor unziperstellt haben), verhindert die Option -x, dass es gepackt wird.

.DS_Store wird weiterhin erstellt, wenn zip -r dir.zip verwendet wird.
Ja, ich finde es selbst nervig. Dies ist ähnlich, aber nicht dasselbe wie das in __MACOSX gespeicherte Material
zip -d foo.zip __MACOSX .DS_Store -> funktioniert

Versuchen Sie Keka . Es enthält eine Option zum Ausschließen von .DS_Store

Geben Sie hier die Bildbeschreibung ein

Das einzige, das ich jemals wirklich benutzt habe, ist BetterZip [$20]

Es ist eine GUI-App, hat aber Applescript & Services-Unterstützung, mit der Sie Voreinstellungen mit Ihren Standardeinstellungen ausführen können - einschließlich des Auslassens von Mac-spezifischen Dateien wie .DS_Store & __MACOSX. Eventuell einen Blick wert.

Aus der BetterZip-Hilfe...

BetterZip unterstützt zwei Dienste: einen zum Extrahieren und einen zum Erstellen von Archiven. Sie können konfigurieren, was die BetterZip-Dienste mit Voreinstellungen machen.

Um einen Dienst zu verwenden, wählen Sie eine oder mehrere Dateien oder Ordner im Finder aus und wählen Sie „Mit BetterZip komprimieren“ oder „Mit BetterZip extrahieren“ im Menü „Finder“ > „Dienste“ oder im Untermenü „Dienste“ im Kontextmenü.

Sie können sogar Tastaturkürzel für die BetterZip-Dienste festlegen, zB ^⌥⌘C zum Komprimieren und ^⌥⌘E zum Extrahieren. Um Verknüpfungen für Dienste festzulegen, gehen Sie zu Systemeinstellungen > Tastatur > Tastaturkürzel und wählen Sie Dienste in der linken Tabelle. Scrollen Sie in der rechten Tabelle zu Dateien und Ordnern, wählen Sie Mit BetterZip komprimieren und drücken Sie ↩. Es erscheint ein editierbares Textfeld. Drücken Sie die gewünschte Verknüpfung.

Eines meiner Save-Presets ...

Geben Sie hier die Bildbeschreibung ein

Das ist eine gute GUI-Option für Setapp-Benutzer.

Basierend auf der iTunes- Antwort. Ich musste auch DS_Store in verschachtelten Verzeichnissen wie folgt entfernen.

zip -r my.zip . -x "**/.DS_Store"