Devido a OP citando o expr '! -name *.*' , ele se transforma no segundo argumento para find . Então agora o que
find pensa que você passou para ele 2 nomes de diretório, isto é, . e um nome louco ! -name *.* , então ele tentará listar todos os arquivos / subdiretórios recursivamente nesses dois. Com . até aí tudo bem, mas quando chega a hora de mergulhar nesse louco dir. ! -name *.* não pode, a menos que você tenha. E mesmo assim, find não estará fazendo o que você queria.
Para isso, você deve citar nos lugares apropriados:
find . ! -name '*.*'
ou
eval find . '! -name "*.*"'