求助:仅含空格无扩展名文件无法用zip命令打包的解决方法
解决zip命令无法打包仅含空格无扩展名文件的问题
问题原因
你使用的zip -u icons.zip *.*命令中,*.*是Shell通配符,仅匹配**文件名包含至少一个点(.)**的文件。那些仅由空格组成、没有扩展名(也没有点)的文件,自然不会被这个通配符选中,因此无法被打包。
解决办法
方法1:匹配所有非隐藏文件
如果需要打包当前目录下所有非隐藏文件(包括特殊命名的文件),直接用*代替*.*即可:
zip -u icons.zip *
该命令会匹配当前目录下所有不以.开头的文件,包含仅由空格组成的文件。
方法2:单独指定特殊文件
如果只想打包目标图标文件(而非全部文件),可以手动指定这些特殊文件名,注意用引号包裹空格文件名,避免Shell解析错误:
- 单个空格的文件:
zip -u icons.zip " "
- 多个空格的文件(比如两个空格):
zip -u icons.zip " "
方法3:批量定位特殊文件
如果有多个这类仅含空格的文件,可用find命令批量定位后传给zip:
zip -u icons.zip $(find . -maxdepth 1 -type f -regex '.*/[[:space:]]+')
这个命令会查找当前目录下所有仅由空白字符组成的文件,并添加到压缩包中。
注意事项
- 若使用zsh,默认通配符行为略有不同,但上述方法依然适用。
- 若需要包含隐藏文件(以
.开头的文件),可在命令中添加.*,但要注意排除.和..目录:
zip -u icons.zip * .[^.]*
内容的提问来源于stack exchange,提问作者fixit7
相关产品推荐
相关产品推荐

