Eu estava tão perto!
O comando que preciso é:
zip -r myarchive.zip dir1 -x dir1/ignoreDir1/**\* dir1/ignoreDir2/**\*
Estou tentando compactar um diretório (no Unix via SSH), mas preciso excluir alguns subdiretórios (e todos os arquivos e diretórios contidos neles).
Até agora eu tenho isso:
zip -r myarchive.zip dir1 -x dir1/ignoreDir/**/*
Isso parece não funcionar.
Eu também tentei
zip -r myarchive.zip dir1 -x dir1/ignoreDir1/* dir1/ignoreDir2/*
No entanto, isso ainda incluirá subdiretórios dentro de ignoreDir1 e ignoreDir2.
A estrutura do subdiretório nos diretórios que eu quero excluir é bastante substancial, então não posso simplesmente adicionar cada diretório ao argumento -x.
Alguém sabe como fazer isso?
Para o meu sistema em particular, a fim de excluir um diretório, tive que colocar aspas nos meus diretórios excluídos e funcionou como um encanto:
zip -r myarchive.zip dir1 -x "dir1/ignoreDir1/*" "dir1/ignoreDir2/*"
Notas:
- excluiu o diretório a ser excluído e todos os arquivos dentro dele.
- Você deve usar o caminho completo para os diretórios que deseja excluir!
O seguinte fará
zip -r myarchive.zip dir1 -x dir1/ignoreDir1\* dir1/ignoreDir2\*
O que você precisa do **
para @sulman?
Funciona como um encanto para mim da seguinte forma:
[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%)
@sulman usando:
zip -r myarchive.zip dir1 -x dir1/ignoreDir1/**\* dir1/ignoreDir2/**\*
ainda incluirá a pasta dir1 / ignoreDir1 / empty no arquivo zip, usando:
zip -r myarchive.zip dir1 -x dir1/ignoreDir1** dir1/ignoreDir2**
vai fazer o truque, você também pode usar um líder ** para pesquisar em subpastas em vez de apenas dir1
Assim como outras respostas, excluindo os diretórios totalmente, em vez de excluir todo o conteúdo dos diretórios:
zip -r myarchive.zip dir1 -x dir1/ignoreDir1/\* dir1/ignoreDir2/\*
Achei que isso funcione em David R Heffelfinger :
zip -r myarchive.zip dir1 -x dir1/ignoreDir1\* dir1\ignorDir2\*
Excluiu o diretório e seu conteúdo.
Para mim, funcionou: zip -9 -r ~ / fold.zip online -x pasta / pasta2 / pasta3 / foldern / \ * .
Parece que o asterisco deve ser escapado.