63 votes

comment exclure des répertoires et des fichiers en zippant un répertoire ?

Je dois compresser un répertoire en excluant certains sous-répertoires et fichiers ; J'ai utilisé ceci :

zip -r zipfile.zip . -x ".*" -x "app/bower_components" -x "node_modules" -x "*.zip" -x "node_modules"

sans succès ; node_modules est un dossier dans le principal tandis que bower_components est à l'intérieur du dossier app

56voto

D-E-N Points 1524

Je devine simplement ce que vous voulez.

-x ".*"

exclure tous les fichiers commençant par un point

fais-le comme ça :

-x .\*

exclure tous les fichiers (avec un point dans le nom du fichier)

fais-le comme ça :

-x \*.\*

--

-x "app/bower_components" -x "node_modules"

exclure ce répertoire et tous les fichiers qu'il contient

fais-le comme ça :

-x app/bower_components/\* -x node_modules/\*

--

-x "*.zip"

exclure tous les fichiers zip

fais-le comme ça :

-x \*.zip

Vous excluez deux fois node_modules

20voto

Jakub Kukul Points 305

En supposant que votre répertoire est un dépôt git (et à en juger par la question, c'est très probablement le cas), vous pouvez ajouter les répertoires que vous souhaitez exclure à la liste de contrôle de l'application .gitignore et utiliser le fichier git archive pour compresser le contenu de votre répertoire :

git archive --format=zip HEAD -o zipfile.zip

Dans votre exemple, le .gitignore devrait ressembler à ceci :

node_modules
app/bower_components

19voto

x-magix Points 291

Exclure tous les dossiers node_modules dans tous les dossiers.

zip -r node.zip . -x "**/node_modules/*"

13voto

MikeiLL Points 743

Quelque chose comme ça devrait faire l'affaire :

zip -r zipped.zip dir1/ -x */\.* *.git* \.* *.zip *.csv *.json *.rb *.bak *.swp *.back *.merge *.txt *.sh dir1/node_modules/**\* dir1/bower_components/**\* dir1/dist/**.*

Où se trouve -x est une liste de répertoires et de types de fichiers (extension) à exclure.

3voto

CWSpear Points 1825

Cela fonctionne parfaitement pour moi sur Ubuntu 16.04 :

sudo zip -r /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*" -x "*.cache*" -x "*test*"

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