Sei que uma pergunta muito antiga, mas procurando uma solução, posso ter encontrado uma resposta melhor.
O principal problema com o uso de "localização" é que ele depende de um atributo definido como executável, mesmo que esse atributo esteja definido para um arquivo não executável.
O MacOS vem com uma pequena ferramenta útil de linha de comando " file
", que exibe informações do arquivo, por exemplo:
$> 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 você pode ver, 'MyProgram' é um executável e bem indicado como tal. Como os executáveis antigos de 32 bits também terão a frase "executável", o seguinte deve listar todos os executáveis verdadeiros (binários):
file * | grep "executable"
Espero que isso seja útil para alguém que procura uma resposta para a mesma pergunta.
Nota: file
parece não ter uma função para recursar através de subdiretórios.
-L
vez de,-or -type l
para fazer com que asstat
chamadas feitasfind
retornem as estatísticas do arquivo vinculado, não o link em si.