我正在尝试从多个 zip 档案中删除具有特定扩展名的文件。
例如,我想删除当前路径中的 zip 档案中包含的所有 .html 文件,因此我尝试这样做:
zip -d *.zip '*.html'
这对找到的第一个 zip 有效,但不会继续。关于如何在 OSX 上执行此操作,有什么建议吗?
答案1
问题是,*.zip
在传递给zip
命令之前,它会扩展到所有 ZIP 文件。
使用一个简单的循环来做到这一点:
for f in *.zip; do zip -d "$f" '*.html'; done
如果你有 Zsh,这种循环会更短一些:
for f (*.zip) zip -d "$f" '*.html'
如果您想要使用标准 OS X 工具递归到子文件夹,请使用find
:
find /path/to/files -type f -name '*.zip' -exec zip -d {} '*.html' \;