如何排除目录和文件压缩目录?

我需要压缩一个目录,不包括一些子目录和文件; 我用过这个:

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

没有任何成功; node_modules是主体文件夹中的文件夹,而bower_components是文件夹app中的文件夹

我只是猜猜你想要什么。

 -x ".*" 

排除所有以点开头的文件

这样做:

 -x .\* 

排除所有文件(文件名中带一个点)

这样做:

 -x \*.\* 

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

排除此目录及其中的所有文件

这样做:

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

 -x "*.zip" 

排除所有zip文件

这样做:

 -x \*.zip 

您将node_modules排除了两次

像这样的东西应该做的伎俩:

 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/**.* 

其中-x是要排除的目录和文件(扩展名)类型的列表。

这在Ubuntu 16.04上对我来说非常适合:

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

假设您的目录是一个git存储库(并且很可能是根据问题判断),您可以将要排除的目录添加到.gitignore文件中,并使用git archive命令来压缩目录的内容:

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

在您的示例中, .gitignore文件必须如下所示:

 node_modules app/bower_components 

在每个项目中跳过node_modules,如下所示:

 for i in */; do zip -r "${i%/}.zip" "$i" -x "*/\node_modules/*" ; done