Você explicou a situação muito bem. A peça final do quebra-cabeça é que unzip
pode lidar com curingas em si:
ARGUMENTS
file[.zip]
...
Wildcard expressions are similar to those supported in commonly used Unix shells (sh, ksh, csh) and may contain:
* matches a sequence of 0 or more characters
Ao citar o caractere curinga *, você impediu que o shell fosse expandido, para que unzip
veja o caractere curinga e lide com a expansão dele de acordo com sua própria lógica.
rm
, por outro lado, não suporta curingas por si próprio , portanto, tentar citar um caractere curinga instruirá rm
a procurar um asterisco literal no nome do arquivo.
O motivo pelo qual unzip *.zip
não funciona é que a sintaxe do unzip
simplesmente não permite vários arquivos zip; se houver vários parâmetros, ele espera que o segundo e os subsequentes sejam arquivos no archive:
unzip [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] file[.zip] [file(s) ...] [-x xfile(s) ...] [-d exdir]