Próbuję spakować katalog (na Unixie przez SSH), ale muszę wykluczyć kilka podkatalogów (oraz wszystkie zawarte w nich pliki i katalogi).
Do tej pory mam to:
zip -r myarchive.zip dir1 -x dir1/ignoreDir/**/*
To jednak nie działa.
Też próbowałem
zip -r myarchive.zip dir1 -x dir1/ignoreDir1/* dir1/ignoreDir2/*
Będzie to jednak nadal obejmować podkatalogi w ignoreDir1 i ignoreDir2.
Struktura podkatalogów w katalogach, które chcę wykluczyć, jest dość pokaźna, więc nie mogę po prostu dodać każdego katalogu do argumentu -x.
Czy ktoś wie jak to zrobić?
Odpowiedzi:
Byłem tak blisko!
Rzeczywiste polecenie, którego potrzebuję to:
źródło
W przypadku mojego konkretnego systemu, aby wykluczyć katalog, musiałem umieszczać cudzysłowy wokół wykluczonych katalogów i działało to jak urok:
Uwagi:
- wykluczało to zarówno katalog do wykluczenia, jak i wszystkie zawarte w nim pliki.
- Musisz użyć pełnej ścieżki do katalogów, które chcesz wykluczyć!
źródło
zip
, co otrzyma listę ścieżki do wpisów w określonych katalogach, ale nie ścieżki do plików w podkatalogach tych katalogów, co powoduje,zip
że nie ignoruje się wszystkiego w podanych katalogach.@sulman za pomocą:
nadal będzie zawierać katalog dir1 / ignoreDir1 / empty w archiwum zip, używając:
załatwi sprawę, możesz także użyć wiodącego ** do przeszukiwania podfolderów zamiast tylko katalogu 1
źródło
Zrobią to
Po co ci
**
@sulman?Dla mnie działa to jak urok:
źródło
Podobnie jak inne odpowiedzi, ale całkowicie wykluczając katalogi, zamiast wykluczać całą zawartość katalogów:
źródło
Znalazłem to do pracy od Davida R. Heffelfingera :
Wykluczono katalog i jego zawartość.
źródło
dir1
iignorDir2
ma być ukośnikiem. Czy masz na myśli, że inne odwrotne ukośniki są odwrotnymi? Jeśli tak, to właśnie skopiowałeś odpowiedź Fuzzybee sprzed dwóch lat.Dla mnie pracował: zip -9 -r ~ / folded.zip online -x folder / folder2 / folder3 / foldern / \ * .
Wygląda na to, że gwiazdkę należy uciec.
źródło