当前位置: 首页>>技术教程>>正文


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

问题描述

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

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*"

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12543.html,未经允许,请勿转载。