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


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


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.


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

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*"

0

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

for i in */; do zip -r "${i%/}.zip" "$i" -x "*/\node_modules/*" ; done
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.