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

Directorio zip de Unix pero excluyendo subdirectorios específicos (y todo lo que contienen)

Estoy tratando de comprimir un directorio (en Unix vía SSH) pero necesito excluir un par de subdirectorios (y todos los archivos y directorios dentro de ellos).

Hasta ahora tengo esto:

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

Eso no parece funcionar.

También he probado con

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

Sin embargo, eso seguirá incluyendo los subdirectorios dentro de ignoreDir1 e ignoreDir2.

La estructura de subdirectorios en los directorios que quiero excluir es bastante sustancial, así que no puedo simplemente añadir cada directorio al argumento -x.

¿Alguien sabe cómo hacer esto?

Respuestas (7)

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

¡Estuve muy cerca!

El comando real que necesito es:

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

En mi sistema particular, para excluir un directorio tuve que poner comillas alrededor de mis directorios excluidos y funcionó como un encanto:

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

Notas:

– esto excluye tanto el directorio a excluir como todos los archivos dentro de él.

– ¡Debe utilizar la ruta completa de los directorios que desea excluir!

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

@sulman usando:

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

seguirá incluyendo dir1/ignoreDir1/ carpeta vacía en el archivo zip, usando:

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

hará el truco, también puede usar un ** inicial para buscar en subcarpetas en lugar de sólo dir1

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

Lo siguiente hará

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

¿Para qué necesitabas el **, @sulman?

A mí me funciona a las mil maravillas de la siguiente manera:

[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

Igual que las otras respuestas, pero excluyendo los directorios por completo, en lugar de excluir todo el contenido de los directorios:

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

Encontré esto para trabajar de David R Heffelfinger :

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

Excluyó el directorio y su contenido.

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

Para mí funcionó: zip -9 -r ~/folded.zip online -x carpeta/carpeta2/carpeta3/foldern/ *****.

Parece ser que el asterisco debe ser escapado.