Aquí hay una manera de excluir scripts, es decir, archivos cuyos dos primeros caracteres son #!
:
find -type f -executable -exec sh -c 'test "$(head -c 2 "$1")" != "#!"' sh {} \; -print
Para algunos tipos de archivos, no está claro si desea clasificarlos como scripts o binarios, por ejemplo, archivos de código de bytes. Dependiendo de cómo estén configuradas las cosas, estas pueden comenzar o no #!
. Si esto te importa, tendrás que hacer que el script de shell interno sea más complejo. Por ejemplo, así es como puede incluir binarios ELF y ejecutables Mono y programas de código de bytes de Objective Caml, pero no otros tipos de ejecutables como scripts de shell o scripts de perl o programas de bytecode 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