Komprimieren Sie Dateien in einem Verzeichnis und in Unterverzeichnissen rekursiv mit dem Befehlszeilentool "zip" in Mac OS X und schließen Sie .DS_Store-Dateien aus ALLEN Unterordnern aus

10

Ich versuche, eine ZIP-Datei mit dem Befehlszeilentool zu erstellen zip, das mit dem Mac OS X Terminal geliefert wird. Ich möchte den Inhalt des aktuellen Ordners rekursiv komprimieren, aber .DS_StoreDateien ausschließen . Ich versuche es damit:

zip -r myarchive.zip . -x .DS_Store

Das -x .DS_Storeschließt die .DS_StoreDatei im aktuellen Ordner aus, jedoch nicht in den rekursiv hinzugefügten Unterordnern. Wie schließe ich auch alle .DS_StoreDateien aus ALLEN Unterordnern aus?

OMA
quelle

Antworten:

17

Fügen Sie der Ausschlussoption einen Platzhalter hinzu

zip -r myarchive.zip . -x "*.DS_Store"
fd0
quelle
Danke für deine Antwort. Es funktioniert, aber warum? :). Könntest du bitte erklären?
OMA
Das wird *zu nichts oder einem Teil eines Pfads erweitert, da zip die Dateien und ihre Verzeichnisse rekursiv komprimiert. Also, ./.DS_Storedann ./*/.DS_Storeund so weiter werden aus dem Archiv ausgeschlossen.
fd0
Ah, interessant. Der Platzhalter funktioniert also anders als in der Windows-Welt, in der "* .DS_Store" nur "jede Datei, die mit .DS_Store endet" bedeutet
OMA
1

Meistens möchte ich alle versteckten Dateien wie .DS_Storeoder .gitoder ausschließen.gitignore

Mit einem einfachen Befehl können Sie all das erledigen und alle Dateien und Unterordner rekursiv komprimieren

zip -r archive.zip folder -x "*/\.*"

Oder noch besser, erstellen Sie eine Funktion in zsh, um das Leben einfacher zu machen

open ~/.zshrc

Fügen Sie den folgenden Code in Ihren Aliase-Bereich ein

function zip-visible(){
    zip -r $1 $2 -X -x "*/\.*"
}

Laden Sie die zsh-Konfiguration neu

source ~/.zshrc

Verwenden Sie so

zip-visible archive.zip folder

Alev
quelle