Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Zip excluding specific directories and files

Zip excluding specific directories

Exclude .git file and node_modules directory

$ zip -r9 [target_file] [source_file] -x *.git* node_modules/\*

Exclude .git file and files in node_modules directory, but keep node_modules directory

$ zip -r9 [target_file] [source_file] -x *.git* node_modules/**\*

Number parameter means degree of compression. -9 is the most optimal but the slowest compression. If -0 is given, there will be no compression. Default level is -6.

** means to adapt exclusions recursively inner directories. \* is an escaped wildcard to avoid path expansion.

Copy link

r0b3r70 commented Jan 20, 2018

slightly modified to backup all my projects in www dir
$ zip -r www -x *.git* */node_modules/**\*

Copy link

se468 commented Feb 22, 2018

When it says no matches found: *.git*. Excludes the whole .git folder for the subdirectory. zip -r9 directory -x directory/.git/\* directory/node_modules/\*

Copy link

@se468 thanks for the info, couldn't figure out why I was getting that error. For my specific case I zipped a folder containing multiple subfolders that contained node_modules and used the following command

zip -r directory -x \*\*/\*/node_modules/\*

Copy link

I think this might help me in what I am trying to do, I just dont understand how to use it.

Copy link

this really helps thanks!

Copy link

wahyusa commented Mar 5, 2022

Thanks it works!!

Copy link

not work ???

Copy link

forme this is the work
zip -r dockerexpress dockerexpress -x 'node_modules/*'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment