Я знаю очень старый вопрос, но в поисках решения я, возможно, нашел лучший ответ.
Основная проблема с использованием «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
возвращали статистику файла, на который ссылается, а не саму ссылку.