jak wykluczyć katalogi i spakowanie pliku do katalogu?

32

I muszę spakować katalog z wyłączeniem niektórych podkatalogów i plików; Użyłem tego:

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

bez powodzenia; node_modulesjest folderem w głównym, gdy bower_componentsznajduje się w aplikacji folderów

arpho
źródło
jaki jest twój wynik i jaki jest twój oczekiwany wynik?
DEN
Chcesz wykluczyć wszystkie podkatalogi lub tylko niektóre z nich?
Sergiy Kolodyazhnyy

Odpowiedzi:

36

Po prostu zgaduję, czego chcesz.

-x ".*"

wyklucz wszystkie pliki zaczynające się od kropki

zrób to jak:

-x .\*

wyklucz wszystkie pliki (z kropką w nazwie pliku)

zrób to jak:

-x \*.\*

-

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

wyklucz ten katalog i wszystkie zawarte w nim pliki

zrób to jak:

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

-

-x "*.zip"

wyklucz wszystkie pliki zip

zrób to jak:

-x \*.zip

Dwa razy wykluczasz moduły_węzła

LEGOWISKO
źródło
2
dzięki, dostałem to, używając różnych postów przybyłych do tego: zip -r * app / * -x \ app / bower_components / * -x \ node_modules / * -x * .zip
arpho
@arpho Twój komentarz powyżej powinien być odpowiedzią, ponieważ wydaje się, że działa dla mnie ...
chesedo
7

Coś takiego powinno załatwić sprawę:

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/**.*

Poniżej -xznajduje się lista katalogów i typów plików (rozszerzeń) do wykluczenia.

MikeiLL
źródło
Teraz, gdy wiem, że **\*chodzi o wykluczenie rekurencyjne. Wielkie dzięki.
Duc Tran
6

Zakładając, że katalog jest repozytorium git (i sądząc po pytaniu, jest bardzo prawdopodobne), możesz dodać katalogi, które chcesz wykluczyć do .gitignorepliku i użyć git archivepolecenia, aby spakować zawartość katalogu:

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

W twoim przykładzie .gitignoreplik musiałby wyglądać tak:

node_modules
app/bower_components
Jakub Kukul
źródło
3

Działa to idealnie dla mnie na Ubuntu 16.04:

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

w każdym projekcie pomiń node_modules jak poniżej:

for i in */; do zip -r "${i%/}.zip" "$i" -x "*/\node_modules/*" ; done
Nils Petersohn
źródło