
Intento ejecutar sh fizmyzip.sh
para eliminar algunos archivos innecesarios de todos los archivos zip en mi carpeta actual. fizmyzip.sh
es:
zip -d *.zip __MACOSX/\*
zip -d *.zip "*/.DS_Store"
Sin embargo, no puede coincidir a-b.zip
, simplemente ab.zip
. ¿Cómo puedo arreglar esto?
Respuesta1
El shell se expande *.zip
a ab.zip a-b.zip
, por lo que los comandos se convierten en
zip -d ab.zip a-b.zip __MACOSX/\*
zip -d ab.zip a-b.zip "*/.DS_Store"
Sólo debe haber un archivo zip de destino en el argumento después de la -d
bandera. Los otros argumentos son los archivos/patrones que se eliminarán. Por eso solo funciona para ab.zip
.
Entonces usa un bucle for:
for zipf in *.zip; do zip -d "$zipf" "__MACOSX/*" "*/.DS_Store"; done