无需cd进入目录,将目录内容压缩为根目录级Zip的方法
在Ubuntu/Linux下无需进入目录直接压缩子目录内容为Zip根目录的方法
原生Zip工具(Zip 3.0适用)
方法1:子shell执行(推荐,兼容隐藏文件)
直接在项目根目录执行以下命令,子shell的cd不会影响当前终端的工作目录,同时能完整打包dist内所有内容(包括隐藏文件)并保留目录结构,且dist本身不会出现在压缩包中:
(cd dist && zip -r ../dist-output.zip .)
解释:
(...)启动子shell,内部的cd dist仅在子shell生效,不改变当前终端的工作目录zip -r ../dist-output.zip .将当前子shell目录(即dist)下的所有文件、子目录递归打包到上级目录的dist-output.zip中,.代表当前目录的全部内容
方法2:直接指定目录内通配符(注意隐藏文件)
如果不需要处理隐藏文件,可直接执行:
zip -r dist-output.zip dist/*
若需包含dist下以.开头的隐藏文件,需补充通配符:
zip -r dist-output.zip dist/* dist/.*
注意:此命令会包含dist/..(上级目录),需确保当前目录下无敏感文件,或提前过滤。
轻量第三方工具可选方案
7-Zip
若系统已安装7z(Ubuntu可通过sudo apt install p7zip-full安装,macOS用brew install p7zip),可执行:
7z a -tzip dist-output.zip ./dist/*
需包含隐藏文件时补充通配符:
7z a -tzip dist-output.zip ./dist/* ./dist/.*
tar + zip(间接生成Zip包)
先通过tar打包dist内容,再转为Zip格式:
tar -C dist -cf - . | zip dist-output.zip -@
解释:
tar -C dist -cf - .切换到dist目录,将内容打包为标准输出(-)zip dist-output.zip -@从标准输入读取文件列表并生成Zip包
内容的提问来源于stack exchange,提问作者DevOverlord
相关产品推荐
相关产品推荐

