Wie kann ich Verzeichnisse ausschließen und Dateien komprimieren?


32

Ich muss ein Verzeichnis mit Ausnahme einiger Unterverzeichnisse und Dateien komprimieren. Ich habe das benutzt:

zip -r zipfile.zip . -x ".*" -x "app/bower_components" -x "node_modules" -x "*.zip" -x "node_modules"

ohne Erfolg; node_modulesist ein Ordner im Hauptordner, während er bower_componentssich in der Ordner-App befindet


Was ist Ihr Ergebnis und was sind Ihre erwarteten Ergebnisse?
DEN

Sie möchten alle oder nur einige Unterverzeichnisse ausschließen ?
Sergiy Kolodyazhnyy

Antworten:


36

Ich rate einfach, was Sie wollen.

-x ".*"

schließen Sie alle Dateien aus, die mit einem Punkt beginnen

mach es wie:

-x .\*

Alle Dateien ausschließen (mit einem Punkt im Dateinamen)

mach es wie:

-x \*.\*

-

-x "app/bower_components" -x "node_modules"

Schließen Sie dieses Verzeichnis und alle darin enthaltenen Dateien aus

mach es wie:

-x app/bower_components/\* -x node_modules/\*

-

-x "*.zip"

schließe alle zip-Dateien aus

mach es wie:

-x \*.zip

Sie schließen node_modules zweimal aus


2
danke ich habe es verstanden, mit verschiedenen post angekommen: zip -r * app / * -x \ app / bower_components / * -x \ node_modules / * -x * .zip
arpho

@arpho Ihr Kommentar oben sollte eine Antwort sein, wie es scheint, für mich zu arbeiten ...
Chesedo

7

So etwas sollte den Trick machen:

zip -r zipped.zip dir1/ -x */\.* *.git* \.* *.zip *.csv *.json *.rb *.bak *.swp *.back *.merge *.txt *.sh dir1/node_modules/**\* dir1/bower_components/**\* dir1/dist/**.*

Im Folgenden finden Sie -xeine Liste der auszuschließenden Verzeichnisse und Dateitypen (Erweiterungstypen).


Jetzt, wo ich weiß, **\*ist das für rekursiven Ausschluss. Danke vielmals.
Duc Tran

6

Angenommen, Ihr Verzeichnis ist ein Git-Repository (und der Frage nach ist dies sehr wahrscheinlich), können Sie der .gitignoreDatei Verzeichnisse hinzufügen, die Sie ausschließen möchten, und den git archiveBefehl verwenden, um den Inhalt Ihres Verzeichnisses zu komprimieren:

git archive --format=zip HEAD -o zipfile.zip

In Ihrem Beispiel .gitignoremüsste die Datei folgendermaßen aussehen:

node_modules
app/bower_components

3

Das funktioniert perfekt für mich unter Ubuntu 16.04:

sudo zip -r /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*" -x "*.cache*" -x "*test*"

0

Überspringe in jedem Projekt node_modules wie folgt:

for i in */; do zip -r "${i%/}.zip" "$i" -x "*/\node_modules/*" ; done
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.