
Me gustaría comprimir el directorio pero excluir algunos subdirectorios. Digamos que tengo tal estructura:
directory
subdirectory 1
subdirectory 2
project 1
html
directory 1
vendor
node_modules
... (other directories)
project 2
html
directory 2
vendor
node_modules
... (other directories)
Me gustaría comprimir todo el directorio principal pero me gustaría excluir rutas como esta:
subdirectory2/*/html/vendor/**
subdirectory2/*/html/node_modules/**
dónde:
*
- es un directorio de un nivel**
- es un directorio con archivos y subdirectorios
El problema es que project 1
son project 2
bastante dinámicos: hay varios. También tenga en cuenta que vendor
los directorios (y también en teoría node_modules
) se pueden colocar en otros lugares, por ejemplo, por project 1/html/public/vendor
lo que no me gustaría excluir solo vendor
el subdirectorio, sino solo el subdirectorio específico vendor
que se encuentra exactamente en determinados directorios html de proyectos.
¿Es posible hacer algo tan complejo usando solo zip
un comando o tal vez debería escribirse algún script bash para esto?
Estoy usando MacOS si hay alguna diferencia.
Lo que he logrado hasta ahora es:
cd directory && zip test-zip.zip * -r -T -x */*/html/vendor/** */*/html/node_modules/**
Parece que casi funciona, pero crea directorios vacíos de proveedores y módulos de nodos (pero no incluye su contenido)
Respuesta1
Parece que la solución es:
cd directory &&
zip test-zip.zip * -r -T -x "*/*/html/vendor/" "*/*/html/node_modules/" "*/*/html/vendor/**" "*/*/html/node_modules/**"
así que excluyo todo en estos directorios y en esos directorios también y también envuelvo todo entre comillas para que se expanda de manera válida.