É isso que você quer dizer?
find . \( \! -iregex ^./bin/.\* -o -iregex ^./include/something/.\* \) \
-name \*.php
find /bin /bin/php -maxdepth 1 -name "*.php"
$ tree /bin /bin |-- ash |-- dont_search | |-- hide_me.php | '-- hide_me.txt |-- du |-- file.php |-- fmt |-- php | |-- hide_me.txt | '-- show_me.php '-- zsh 2 directories, 184 files
$ find /bin /bin/php -maxdepth 1 -name "*.php" /bin/file.php /bin/php/show_me.php
Observe que /bin/dont_search/hide_me.php não correspondeu
Encontrar GNU
find . -name "*.txt" ! -iregex ".*/bin/.*"
Tente isto:
find . ./bin/php -path ./bin -prune -o -print
Isso também irá ignorar arquivos que estão dentro de ./bin.
A propósito, é "encontrar" em vez de "encontrar Bash".