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

时间:2011-07-15 08:09:55

标签: unix zip archive

以下是我要归档的文件夹的目录结构:

DIR STRUCTURE

HOME
HOME/.abc
HOME/FIRST
HOME/FIRST/.def

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

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

2 个答案:

答案 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在下一个命令之前没有注意到这一点。