195 votes

Répertoire zip Unix mais excluant des sous-répertoires spécifiques (et tout ce qu'ils contiennent)

J'essaie de compresser un répertoire (sous Unix via SSH) mais je dois exclure quelques sous-répertoires (et tous les fichiers et répertoires qu'ils contiennent).

Pour l'instant, j'ai ceci :

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

Mais ça ne semble pas fonctionner.

J'ai aussi essayé

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

Cependant, cela inclura toujours les sous-répertoires dans ignoreDir1 et ignoreDir2.

La structure des sous-répertoires dans les répertoires que je veux exclure est assez importante et je ne peux pas simplement ajouter chaque répertoire à l'argument -x.

Quelqu'un sait-il comment faire ?

0 votes

@AlexanderMills - Voir cette question.

2voto

JorgeM Points 413

Dans Ubuntu Server, cette commande fonctionne pour compresser un fichier en excluant certains dossiers, mais avec une petite différence :

Si vous voulez zipper sans garder les dossiers vides :

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

Si vous voulez zipper, gardez des dossiers vides :

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

Par exemple :

zip -r testtt.zip uploads/2013/ -x uploads/2013/03/**\* uploads/2013/04/**\*
zip -r testtt.zip uploads/2013/ -x uploads/2013/03\* uploads/2013/04\*

-1voto

Rick Ehrahrt Points 1

J'ai trouvé ceci pour travailler à partir de David R Heffelfinger :

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

Il a exclu le répertoire et son contenu.

0 votes

Il est certain que la barre oblique inverse entre dir1 y ignorDir2 est censé être une barre oblique vers l'avant. Voulez-vous dire que les autres barres obliques inverses sont des barres obliques inverses ? Si c'est le cas, vous venez de copier la réponse de fuzzybee datant d'il y a deux ans.

-2voto

Francisco M Points 1

Pour moi, ça a marché : zip -9 -r ~/folded.zip online -x folder/folder2/folder3/foldern/ \* .

Il semble que l'astérisque doive être échappé.

3 votes

En quoi cette solution diffère-t-elle de celle proposée par Rick Ehrahrt il y a un an, ou de celle d'Eric (il y a quelques années de plus) ? Veuillez lire les solutions proposées avant d'en poster une nouvelle...

0 votes

Parce que j'ai ajouté une barre oblique inverse avant l'astérisque (c'est-à-dire pour échapper à l'astérisque). Dans la version linux de mon travail, cela ne fonctionne pas si je ne fais pas cela.

0 votes

Rick Ehrahrt (2014) et Eric (2012) ont également proposé la même solution (pour échapper à l'astérisque). Il n'y a rien de mal à la solution, mais poster la même solution plusieurs fois n'a pas de sens à moins que l'on puisse ajouter de la profondeur à la solution en expliquant pourquoi la solution fonctionne. Dans un cas aussi simple que celui-ci, il n'y a rien à expliquer de plus. Ne le prenez pas personnellement, ma seule intention est d'aider à garder le SU propre et concis afin que les utilisateurs puissent trouver la meilleure solution avec le moins d'effort possible.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X