Arme un script para hacer algunas operaciones de archivo por mí. Estoy usando el operador comodín *
para aplicar funciones a todos los archivos de un tipo, pero hay una cosa que no entiendo. Puedo unzip
todos los archivos en una carpeta como esta
unzip "*".zip
Sin embargo, para eliminar todos los archivos zip después, necesito hacer
rm *.zip
Es decir, no quiere las comillas. El descomprimir, por otro lado, no funciona si solo le doy el * (me da una advertencia de que "los archivos no coinciden").
¿Por qué es esto diferente? Para mí, esto parece exactamente la misma operación. ¿O estoy usando el comodín incorrectamente?
Las introducciones al comodín en Unix realmente no entran en esto, y no pude encontrar nada en los documentos rm
o zip
.
Estoy usando la terminal en una Mac (Yosemite).
unzip
aplica el glob al contenido de un archivo; no puedes obtenerlos de bash con un comodín. (Necesitarías `` para f in unzip -l archive.zip
; do ... done`)
unzip
aceptar globos para que coincidan dentro de un único archivo zip. Pero esto es diferente; Realmente intenté unzip '*.zip'
en un directorio con múltiples archivos zip, y extrae todos los archivos de todos los zip. Como dije, súper raro. tar
no tiene ningún modo de operación como ese.
unzip
podría hacer esto sin elfor f in *.zip;do...done
bucle de shell normal . Una interfaz de usuario de línea de comandos no similar a Unix tan extraña.