Если я использую find
команду, как это:
find /mydir/mysubdir -executable -type f
перечислены все исполняемые файлы (кроме каталогов), включая файл исполняемого скрипта (например, script.sh и т. д.). Что я хочу сделать, это перечислить только двоичные исполняемые файлы.
Ответы:
Вы можете попробовать
file
утилиту. Согласно справочной странице:Возможно, вам придется поиграть с регулярным выражением, но что-то вроде:
Файл имеет много опций, поэтому вы можете поближе взглянуть на справочную страницу. Я использовал первый вариант, который, как мне показалось, выдает вывод, который легко выводить на экран.
источник
find -type f -executable -exec sh -c "file -i '{}' | grep -q 'x-executable; charset=binary'" \; -print
. Он даст вам только файлы (и, следовательно, может быть передан следующей команде, которую он хочет запустить)find
с помощьюbrew install findutils
или,sudo port install findutils
а затем запустить такой вызов с аналогичным эффектом:gfind . -type f -executable -exec file '{}' \; | grep -i execut
Вот способ исключить сценарии, то есть файлы, первые два символа которых
#!
:Для некоторых типов файлов неясно, хотите ли вы, чтобы они классифицировались как скрипты или двоичные файлы, например, файлы байт-кода. В зависимости от того, как все настроено, они могут начинаться или не начинаться
#!
. Если это важно для вас, вам придется сделать скрипт внутренней оболочки более сложным. Например, вот как вы можете включить двоичные файлы ELF и исполняемые файлы Mono и программы байт-кода Objective Caml, но не другие виды исполняемых файлов, такие как сценарии оболочки или сценарии perl или программы байт-кода JVM:источник
На тот случай, если вы окажетесь в системе с более низким уровнем
find
(как я пишу, все еще существует множество научных кластеров под управлением RHEL5!) Без прав на обновление: вместов приведенных выше отличных ответах вы можете сделать, например,
который ищет биты разрешения. К сожалению, вышесказанное находит только файлы, для которых у пользователя есть исполняемый файл, но это обычно работает для меня.
источник