İşte komut dosyalarını hariç tutmanın bir yolu, yani ilk iki karakteri olan dosyaları #!
:
find -type f -executable -exec sh -c 'test "$(head -c 2 "$1")" != "#!"' sh {} \; -print
Bazı dosya türleri için, örneğin bytecode dosyaları gibi, komut dosyaları mı yoksa ikili dosyalar olarak mı sınıflandırılmasını istediğiniz belli değil. İşlerin nasıl yapıldığına bağlı olarak, bunlar başlayabilir veya başlamaz #!
. Bu sizin için önemliyse, iç kabuk betiğini daha karmaşık hale getirmeniz gerekir. Örneğin, ELF ikili dosyalarını ve Mono çalıştırılabilirlerini ve Objective Caml bytecode programlarını nasıl dahil edebileceğinizi ancak kabuk betiği veya perl betiği veya JVM bytecode programı gibi başka türdeki yürütücüleri bulamayabilirsiniz:
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