Une très vieille question, j'en suis conscient, mais en cherchant une solution, j'ai peut-être trouvé une meilleure réponse.
Le principal problème de l'utilisation de "find" est qu'il repose sur un attribut défini comme exécutable, même si cet attribut est défini pour un fichier non exécutable.
MacOS est livré avec un petit outil de ligne de commande très pratique " file
", qui affiche des informations sur le fichier, par exemple :
$> 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
Comme vous pouvez le constater, "MonProgramme" est un exécutable, et il est bien indiqué comme tel. Étant donné que les anciens exécutables 32 bits comportent également l'expression "exécutable", la liste suivante devrait énumérer tous les véritables exécutables (binaires) :
file * | grep "executable"
J'espère que cela sera utile à quelqu'un qui cherche une réponse à la même question.
Note : file
ne semble pas avoir de fonction de récursion dans les sous-répertoires.