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

Unix zip каталог, но исключает определенные подкаталоги (и все внутри них).

Я пытаюсь заархивировать каталог (на Unix через SSH), но мне нужно исключить пару подкаталогов (и все файлы и каталоги внутри них).

Пока что у меня есть это:

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

Это, кажется, не работает.

Я также пробовал

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

Однако это все равно будет включать подкаталоги в параметр ignoreDir1 и ignoreDir2.

Структура подкаталогов в каталогах, которые я хочу исключить, довольно существенна, поэтому я не могу просто добавить каждый каталог в аргумент -x.

Кто-нибудь знает, как это сделать?

Ответы (7)

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

Я был так близко!

Мне нужна следующая команда:

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

@sulman using:

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

по-прежнему будет включать dir1/ignoreDir1/пустую папку в zip-архив, используя::

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

выполнит трюк, вы также можете использовать ведущий ** для поиска в подкаталогах вместо dir1.

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

Следующее сделает

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

Зачем тебе понадобились **, @sulman?

Для меня это работает как очарование:

[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

Как и в других ответах, но исключая каталоги полностью, вместо того, чтобы исключать все содержимое каталогов:

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

Я нашел это для работы от David R Heffelfinger :

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

Он исключил каталог и его содержимое.

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

Для меня работало: zip -9 -r ~/folded.zip online -x папка/папка2/папка3/папка/ *.

Похоже, что звездочка должна быть экранирована.

Похожие вопросы

10
37
7
11
6