
Tento executar sh fizmyzip.sh
para remover alguns arquivos desnecessários de todos os arquivos zip da minha pasta atual. fizmyzip.sh
é:
zip -d *.zip __MACOSX/\*
zip -d *.zip "*/.DS_Store"
No entanto, não pode corresponder a-b.zip
apenas a ab.zip
. Como posso consertar isso?
Responder1
O shell se expande *.zip
para ab.zip a-b.zip
, então os comandos se tornam
zip -d ab.zip a-b.zip __MACOSX/\*
zip -d ab.zip a-b.zip "*/.DS_Store"
Deve haver apenas um arquivo zip de destino no argumento após o -d
sinalizador. Os outros argumentos são os arquivos/padrões a serem excluídos. É por isso que só funciona para ab.zip
.
Então use um loop for:
for zipf in *.zip; do zip -d "$zipf" "__MACOSX/*" "*/.DS_Store"; done