Linux命令行如何压缩含隐藏文件(含.htaccess)至单个ZIP包?
解决Linux下ZIP打包包含隐藏文件(如.htaccess)的问题
我来帮你搞定这个常见的小问题!在Linux中用zip命令打包时漏掉.htaccess这类隐藏文件,大多是因为shell通配符默认不会匹配以.开头的文件,或者没选对打包方式。下面给你几个实用的解决办法:
方法1:递归打包整个目录(最推荐)
如果要打包当前目录下的所有内容(包括子目录和所有隐藏文件),直接用递归参数-r并指定当前目录即可:
zip -r archive.zip ./
这个命令会递归遍历当前目录下的所有文件和子目录,自然包含所有以.开头的隐藏文件,比如.htaccess、.bashrc等。而且它能正确处理带空格或特殊字符的文件名,非常稳妥。
方法2:直接指定隐藏文件+普通文件
如果只想打包当前目录的文件(不含子目录),可以同时匹配隐藏文件和普通文件:
zip archive.zip .* *
不过要注意,这个命令会把当前目录.和上级目录..也加进去,如果你不想包含这两个,可以用ls -A来过滤(-A会列出除.和..之外的所有文件):
zip archive.zip $(ls -A)
⚠️ 注意:如果文件名包含空格、引号这类特殊字符,这个方法可能会出问题,此时更推荐用下面的find方法。
方法3:用find命令精准匹配
find命令能更灵活地筛选文件,避免特殊文件名的问题,适合只打包当前目录下的所有文件(不含子目录):
find . -maxdepth 1 -type f -exec zip archive.zip {} +
参数解释:
-maxdepth 1:只查找当前目录,不深入子目录-type f:只筛选文件(排除目录)-exec zip ... {} +:把找到的所有文件添加到zip包中
额外提示
如果你的zip版本比较旧,可能需要加上-D参数来避免创建空目录条目,但现在大多数新版本的zip已经不需要了。
内容的提问来源于stack exchange,提问作者Parth Kundariya
相关产品推荐
相关产品推荐

