J'essaie de compresser un répertoire (sous Unix via SSH), mais je dois exclure quelques sous-répertoires (ainsi que tous les fichiers et répertoires qu'ils contiennent).
Jusqu'ici j'ai ceci:
Zip -r myarchive.Zip dir1 -x dir1/ignoreDir/**/*
Cela ne semble pas fonctionner cependant.
J'ai aussi essayé
Zip -r myarchive.Zip dir1 -x dir1/ignoreDir1/* dir1/ignoreDir2/*
Cependant, cela inclura toujours des sous-répertoires dans ignoreDir1 et ignoreDir2.
La structure des sous-répertoires dans les répertoires que je souhaite exclure est très importante, aussi je ne peux pas simplement ajouter chaque répertoire à l'argument -x.
Est-ce que quelqu'un sait comment faire ça?
J'étais si près!
La commande dont j'ai besoin est:
Zip -r myarchive.Zip dir1 -x dir1/ignoreDir1/**\* dir1/ignoreDir2/**\*
Pour mon système particulier, afin d'exclure un répertoire, je devais mettre des guillemets autour de mes répertoires exclus et cela fonctionnait à merveille:
Zip -r myarchive.Zip dir1 -x "dir1/ignoreDir1/*" "dir1/ignoreDir2/*"
Remarques:
- cela exclut à la fois le répertoire à exclure et tous les fichiers qu'il contient.
- Vous devez utiliser le chemin d'accès complet aux répertoires que vous souhaitez exclure!
Ce qui suit fera
Zip -r myarchive.Zip dir1 -x dir1/ignoreDir1\* dir1/ignoreDir2\*
Pour quoi aviez-vous besoin du **
, @sulman?
Cela fonctionne comme un charme pour moi comme suit:
[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 utilisant:
Zip -r myarchive.Zip dir1 -x dir1/ignoreDir1/**\* dir1/ignoreDir2/**\*
continuera d'inclure le dossier dir1/ignoreDir1/empty dans l'archive Zip, en utilisant:
Zip -r myarchive.Zip dir1 -x dir1/ignoreDir1 ** dir1/ignoreDir2 **
fera l'affaire, vous pouvez également utiliser un ** principal pour rechercher dans les sous-dossiers au lieu de seulement dir1
Tout comme les autres réponses, mais en excluant entièrement les répertoires, au lieu d'exclure tout le contenu des répertoires:
Zip -r myarchive.Zip dir1 -x dir1/ignoreDir1/\* dir1/ignoreDir2/\*
J'ai trouvé que cela fonctionne de David R Heffelfinger :
Zip -r myarchive.Zip dir1 -x dir1/ignoreDir1\* dir1\ignorDir2\*
Cela excluait le répertoire et son contenu.