问题描述
我,需要压缩一个目录,不包括一些子目录和文件;我用这个:
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-Files
这样做:
-x \*.zip
您排除 node_modules 两次
次佳思路
假设您的目录是一个 git 存储库(根据问题判断,很可能是),您可以将要排除的目录添加到 .gitignore
文件并使用 git archive
命令压缩目录的内容:
git archive --format=zip HEAD -o zipfile.zip
在您的示例中, .gitignore
文件必须如下所示:
node_modules
app/bower_components
第三种思路
排除所有文件夹中的所有 node_modules 文件夹。
zip -r node.zip . -x "**/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*"