Este é realmente um problema bastante difícil, como afirmado.
Por 'executável' você deve dizer algo diferente de --x-------
permissions - o bit executável é definido no modo de arquivo. Eu acho que você quer dizer: é uma imagem compilada ou script de shell ou código de byte java, etc.
Para fazer isso, você precisa usar o comando file, que interpreta a "mágica" no início de um arquivo: como #!/bin/bash
no início de um arquivo de script de shell. A parte boa disso é que o arquivo Solaris dá respostas maravilhosas - se você é humano. Ele fornece muitas respostas diferentes.
Se você é um programa, boa sorte. Um arquivo regular que é "dados" pode dizer coisas como "texto ASCII", "arquivo de dados" e assim por diante. IMO o que você tem que fazer é obter uma lista única de "tipos" de arquivos antes de tentar usar find para diferenciar o que você quer. Você pode fazer uma lista com find e awk.
cd /path/to/start/directory
find . -type f -exec /usr/bin/file {} \; | awk '!arr[$0]++' > /tmp/mylist
/ tmp / mylist é uma lista exclusiva desses "tipos de arquivos"
Próxima etapa - um ser humano terá que decidir quais entradas em / tmp / my se encaixam em uma definição de arquivo executável e obter ou mover as outras para a pilha "regular". Eu tentei isso no passado, então reserve algum tempo para isso.
Atualize sua postagem aqui com mais informações ao recebê-la. Dependendo do que você conseguir, alguém poderá mostrar o que fazer em seguida.