A regex não é aplicada apenas no início, ela é aplicada à string whole . Você só precisa dar o regex certo, um que capture o nome do arquivo inteiro:
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Oct 6 15:46 aaafoo
-rw-r--r-- 1 terdon terdon 0 Oct 6 15:46 aaafooaaa
-rw-r--r-- 1 terdon terdon 0 Oct 6 15:46 fooaaa
$ find . -regex ".*foo.*"
./aaafoo
./aaafooaaa
./fooaaa
$ find . -regex "^./foo.*"
./fooaaa
$ find . -regex ".*foo"
./aaafoo
Você pode estar procurando o -name
test, que usa globs, não expressões regulares:
$ find . -name "*foo*"
./aaafoo
./aaafooaaa
./fooaaa