Я знаю, дуже старе питання, але шукаючи рішення, можливо, я знайшов кращу відповідь.
Основна проблема використання "find" полягає в тому, що він покладається на набір атрибутів, що виконується, навіть якщо цей атрибут встановлений для невиконаного файлу.
MacOS постачається з зручним маленьким інструментом командного рядка " file
", який відображає інформацію про файл, наприклад:
$> 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
Як бачимо, "MyProgram" - це виконуваний файл, який добре вказаний як такий. Оскільки старі 32-бітні виконувані файли також будуть мати фразу "виконуваний файл" і в цьому, нижче слід перелічити всі справжні виконувані файли (бінарні файли):
file * | grep "executable"
Сподіваюся, це буде корисно і тому, хто шукає відповідь на те саме питання.
Примітка: file
схоже, не має функції повторюватись через підкаталоги.
-L
замість того,-or -type l
щоб викликати будь-якіstat
дзвінки,find
щоб повернути статистику файлу, пов’язаного з ним, а не саме посилання.