2011-07-19 10:19:13 +0000 2011-07-19 10:19:13 +0000
121
121

Unixowy katalog zip, ale wykluczył określone podkatalogi (i wszystko, co się w nich znajduje)

Próbuję zripować katalog (na Uniksie przez SSH), ale muszę wykluczyć kilka podkatalogów (i wszystkie pliki i katalogi w nich).

Jak na razie mam to:

zip -r myarchive.zip dir1 -x dir1/ignoreDir/**/*

To jednak nie wydaje się działać.

Próbowałem również

zip -r myarchive.zip dir1 -x dir1/ignoreDir1/* dir1/ignoreDir2/*

Jednak to nadal będzie obejmować podkatalogi w ramach ignoreDir1 i ignoreDir2.

Struktura podkatalogów w katalogach, które chcę wykluczyć jest całkiem spora, więc nie mogę po prostu dodać każdego katalogu do argumentu -x.

Czy ktoś wie, jak to zrobić?

Odpowiedzi (7)

134
134
134
2011-07-19 10:32:23 +0000

Byłem tak blisko!

Właściwa komenda, której potrzebuję to:

zip -r myarchive.zip dir1 -x dir1/ignoreDir1/ **\* dir1/ignoreDir2/** \*
```.
73
73
73
2012-10-31 11:43:43 +0000

W moim konkretnym systemie, aby wykluczyć katalog, musiałem umieścić cudzysłów wokół moich wykluczonych katalogów i to działało jak urok:

zip -r myarchive.zip dir1 -x "dir1/ignoreDir1/*" "dir1/ignoreDir2/*"

Uwagi:

– to wykluczało zarówno katalog do wykluczenia, jak i wszystkie pliki wewnątrz niego.

– Musisz użyć pełnej ścieżki do katalogów, które chcesz wykluczyć!

9
9
9
2013-10-30 11:31:16 +0000

@sulman używając:

zip -r myarchive.zip dir1 -x dir1/ignoreDir1/\*\*\* dir1/ignoreDir2/\*\*\*

nadal będzie zawierał dir1/ignoreDir1/ pusty folder w archiwum zip, używając:

zip -r myarchive.zip dir1 -x dir1/ignoreDir1\*\* dir1/ignoreDir2\*\*

załatwi sprawę, możesz również użyć wiodącego \, aby szukać w podfolderach zamiast tylko dir1

7
7
7
2012-09-17 05:00:36 +0000

Następująca procedura zadziała

zip -r myarchive.zip dir1 -x dir1/ignoreDir1* dir1/ignoreDir2*

Do czego potrzebowałeś **, @sulman?

Działa jak urok dla mnie w następujący sposób:

[root@ip-00-000-000-000 dir1]# ls -lrt dir1/ 
total 16
drwxr-xr-x 2 root root 4096 Oct 31 07:38 ignoredir1
drwxr-xr-x 2 root root 4096 Oct 31 07:38 ignoredir2
drwxr-xr-x 2 root root 4096 Oct 31 07:39 dir3
-rw-r--r-- 1 root root 8 Oct 31 07:39 test.txt

[root@ip-00-000-000-000 temp]# zip -r dir1.zip dir1 -x dir1/ignoredir1\* dir1/ignoredir2\*
  adding: dir1/ (stored 0%)
  adding: dir1/dir3/ (stored 0%)
  adding: dir1/dir3/test3.txt (deflated 13%)
  adding: dir1/test.txt (stored 0%)
1
1
1
2016-01-22 14:39:17 +0000

Podobnie jak inne odpowiedzi, ale z całkowitym wykluczeniem katalogów, zamiast wykluczenia całej zawartości katalogów:

zip -r myarchive.zip dir1 -x dir1/ignoreDir1/\* dir1/ignoreDir2/\*
0
0
0
2014-10-03 18:28:57 +0000

Znalazłem to do pracy z David R Heffelfinger :

zip -r myarchive.zip dir1 -x dir1/ignoreDir1\* dir1\ignorDir2\*

To wykluczyło katalog i jego zawartość.

-1
-1
-1
2015-12-01 13:29:01 +0000

Dla mnie zadziałało: zip -9 -r ~/folded.zip online -x folder/folder2/folder3/foldern/ **.

Wygląda na to, że gwiazdka musi być ucieczką.