以下是我要归档的文件夹的目录结构:
DIR STRUCTURE
HOME
HOME/.abc
HOME/FIRST
HOME/FIRST/.def
我正在使用simlpe $PATCH/zip -r -l -x "bac*" abc.zip HOME/*
我注意到的一个有趣的事情是它直接在HOME下跳过隐藏文件夹,它在FIRST下拉链。我在这里错过了什么?这是我选择的选项的副作用吗?请提前帮助谢谢。
答案 0 :(得分:9)
zip archiveName -r .* -x "../*"
使用。*欺骗si并排除../*
答案 1 :(得分:8)
*
不是由zip实用程序解释,而是由shell扩展。在执行zip实用程序之前,*
将替换为所有非隐藏文件或目录的空格分隔列表。
您可以通过将$PATCH/zip
替换为echo
来证明这一点,GLOBIGNORE
将显示在shell重组后实际传递给程序的参数。
如果您将环境变量.:..
设置为.
,则不仅bash会禁用..
和.*
的匹配,它还具有自动启用的良好效果'dotglob',与其他隐藏文件匹配,无需*
,因此您只需使用GLOBIGNORE=.:..; $PATCH/zip -r -l -x "bac*" abc.zip HOME/*; unset GLOBIGNORE
即可。
例如,这可以解决您的问题:
GLOBIGNORE=.:.. $PATCH/zip -r -l -x "bac*" abc.zip HOME/*
请注意,您无法通过简短的方式或在一个命令中执行此操作:
{{1}}
似乎bash在下一个命令之前没有注意到这一点。