Sucht man mit find nach einem Textschnipsel, erkauft man sich schnell den Nachteil, dass der String auch in binären Dateien gefunden wird: In Zip-Files, in ISO-Images, in TAR-Archiven und so weiter. Zum Beispiel:
jcb@hercules:~$ find / -type f -exec grep -l "linux" {} \; ... /home/jcb/Downloads/Leo-4.10-final.zip /home/jcb/Downloads/websec-1.9.0.tar /home/jcb/Downloads/alt/rhel-server-6.2-x86_64-dvd.iso
Diese Einträge interessieren aber eigentlich nicht, wie könnte man sie ausklammern? Das klappt zum Beispiel, indem man einen weiteren Filter in Reihe schaltet:
jcb@hercules:~$ find / -type f -exec grep -l "linux" {} \; -exec file {} \; | grep text | cut -d ':' -f1
Das dauert merklich länger, denn jetzt werden für jede Fundstelle zusätzlich die Linux Kommandos file und grep ausgeführt. Dafür listet das Find-Kommando nun nur noch solche Treffer, bei denen der mit file ausgegebene MIME-Type der Fundstelle das Wort "text" enthält. Auf diese Weise erhält man nur Ergebnisse aus reinen Textdateien und klammert alle Binärdaten aus.