Respostas:
Se o bash não conseguir encontrar uma correspondência, ele passa a string literal para o aplicativo com *s não expandidos. Por exemplo:
$ ls
foo
$ cat /tmp/test
echo $1
$ /tmp/test *foo*
foo
$ /tmp/test *bar*
*bar*
bashexpandiu *foo*porque correspondia, mas passou *bar*diretamente porque não correspondia. A nullglobopção informará ao bash para resolver padrões não correspondentes à sequência vazia:
$ shopt -s nullglob
$ /tmp/test *bar*
$
zsh: no matches found.
no_nomatchacionar esse comportamento.
find . -name *foo*porfind . -name '*foo*', permitirá que as correspondências curinga funcionem conforme o esperado.