Una pregunta muy antigua, soy consciente, pero buscando una solución puede que haya encontrado una respuesta mejor.
El principal problema de usar "find" es que depende de un atributo establecido como ejecutable, incluso si este atributo está establecido para un archivo no ejecutable.
MacOS incluye una práctica herramienta de línea de comandos " file
", que muestra información sobre los archivos, por ejemplo:
$> file *
Distribution: directory
SomeFile.icns: Mac OS X icon, 3272878 bytes, "ic09" type
MyPicture.png: PNG image data, 1024 x 1024, 8-bit/color RGBA, non-interlaced
NSHelpers.pas: Algol 68 source text, ASCII text
myProgram: Mach-O 64-bit executable x86_64
Como puedes ver, 'MiPrograma' es un ejecutable, y está bien indicado como tal. Dado que los viejos ejecutables de 32 bits tendrán la frase "ejecutable" en esto también, lo siguiente debería listar todos los verdaderos ejecutables (binarios):
file * | grep "executable"
Espero que esto también sea útil para alguien que busque una respuesta a la misma pregunta.
Nota: file
no parece tener una función para recorrer subdirectorios.