Aqui está uma maneira de excluir scripts, ou seja, arquivos cujos dois primeiros caracteres são #!
:
find -type f -executable -exec sh -c 'test "$(head -c 2 "$1")" != "#!"' sh {} \; -print
Para alguns tipos de arquivos, não está claro se você deseja que eles sejam classificados como scripts ou binários, por exemplo, arquivos de bytecode. Dependendo de como as coisas estão configuradas, elas podem ou não começar #!
. Se isso lhe interessa, você terá que tornar o script interno do shell mais complexo. Por exemplo, veja como você pode incluir binários ELF e executáveis Mono e programas de bytecode Objective Caml, mas não outros tipos de executáveis, como shell scripts ou scripts perl ou programas de bytecode da JVM:
find -type f -executable -exec sh -c '
case "$(head -n 1 "$1")" in
?ELF*) exit 0;;
MZ*) exit 0;;
#!*/ocamlrun*) exit 0;;
esac
exit 1
' sh {} \; -print