7zip命令打包文件时排除指定目录或文件

需求

代码目录: code 下面有 .git .idea 目录是不需要打包存储的,需要排除,直接使用如下命令:

7z a -t7z code.7z code '-xr!.git' '-xr!.idea'

并没有效果,还是打包了,原因是.被解析成了当前目录,这是不被支持的

解决办法

把要排除的目录,输出到一个文件里面,然后调整命令如下:

7z a -t7z code.7z code/ -xr@dirs.txt

相关参数说明

    7z # 主命令
    a  # 添加文件
    -t7z # 打包时的文件类型
    code.7z  # 打包输出的文件名
    code/  # 打包的目录
    -xr@dirs.txt # 排除的数据,具体的文件或文件夹路径,以**打包目录**为根目录

生成指定的排除文件

ll | grep '^d' | awk '{print $9".git\n" $9".idea"}' > ../wrcl_dirs.txt
# 以上命令只是排除目录下的 .git .idea