![在 MacOSX 上,*.zip 无法匹配 ab.zip 只是 ab.zip,我该如何解决这个问题?](https://linux22.com/image/178376/%E5%9C%A8%20MacOSX%20%E4%B8%8A%EF%BC%8C*.zip%20%E6%97%A0%E6%B3%95%E5%8C%B9%E9%85%8D%20ab.zip%20%E5%8F%AA%E6%98%AF%20ab.zip%EF%BC%8C%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%EF%BC%9F.png)
我尝试运行sh fizmyzip.sh
以从当前文件夹下的所有 zip 文件中删除一些不必要的文件。fizmyzip.sh
是:
zip -d *.zip __MACOSX/\*
zip -d *.zip "*/.DS_Store"
然而,它不能匹配a-b.zip
,只是ab.zip
。我怎样才能解决这个问题?
答案1
shell 扩展*.zip
为ab.zip a-b.zip
,因此命令变为
zip -d ab.zip a-b.zip __MACOSX/\*
zip -d ab.zip a-b.zip "*/.DS_Store"
标志后面的参数中应该只有一个目标 zip 文件-d
。其他参数是要删除的文件/模式。这就是为什么它只适用于ab.zip
.
所以使用 for 循环:
for zipf in *.zip; do zip -d "$zipf" "__MACOSX/*" "*/.DS_Store"; done