ZIP不会归档HOME下的隐藏文件

Ram*_*Ram 3 unix zip archive

这是我试图存档的文件夹的目录结构:

DIR结构

HOME
HOME/.abc
HOME/FIRST
HOME/FIRST/.def
Run Code Online (Sandbox Code Playgroud)

我正在使用simlpe $PATCH/zip -r -l -x "bac*" abc.zip HOME/*

我观察到的一个有趣的事情是它直接在HOME下跳过隐藏文件夹,它在FIRST下拉链.我在这里错过了什么?这是我选择的选项的副作用吗?请提前帮助谢谢.

daf*_*fyk 9

zip archiveName -r .* -x "../*"
Run Code Online (Sandbox Code Playgroud)

使用.*并且不包括../*


Del*_*ani 8

*不是由zip实用程序解释,而是由shell扩展.在执行zip实用程序之前,*将替换为所有非隐藏文件或目录的空格分隔列表.

您可以通过替换证明这一点$PATCH/zipecho,这将表明,实际上传递给程序,壳的mangling后的参数.


如果设置环境变量GLOBIGNORE.:..,不仅会打坏禁用的匹配...,它也自动启用"dotglob",其中其他隐藏的文件相匹配,而不需要对不错的效果.*,所以你可以用*一切.

例如,这应该可以解决您的问题:

GLOBIGNORE=.:..; $PATCH/zip -r -l -x "bac*" abc.zip HOME/*; unset GLOBIGNORE
Run Code Online (Sandbox Code Playgroud)

请注意,您无法通过简短的方式或在一个命令中执行此操作:

GLOBIGNORE=.:.. $PATCH/zip -r -l -x "bac*" abc.zip HOME/*
Run Code Online (Sandbox Code Playgroud)

似乎bash在下一个命令之前没有注意到这一点.