Não há como fazer isso. É o filtro nome do arquivo e os nomes não sugerem se o conteúdo do arquivo é binário ou não.
Existem basicamente duas maneiras possíveis de implementar isso:
- consulta do tipo mime de cada arquivo
- examine o conteúdo de cada arquivo para avaliar seu tipo
Ambas as opções envolvem a leitura de arquivos, e isso é algo que você realmente não quer fazer, pois pode matar o desempenho (veja gerenciadores de arquivos que exibem visualizações de arquivos, eles são bem lentos mesmo na presença de caches). Para a segunda opção, algo como primeiros 512 bytes seria suficiente, ainda se você abrir o diretório contendo 1000 arquivos ( /usr/bin
, por exemplo) todos esses arquivos devem estar localizados em seu armazenamento, o que é muito lento, a menos que eles já estejam armazenados em cache pelo seu Kernel do SO.