file /usr/bin/file
enthält beispielsweise auf meinem System nicht das Wort "binary" in seiner Ausgabe. Wenn file -i
verfügbar ist, enthält es das Wort "binär". Ohne -i
, ist es möglicherweise zuverlässiger, auf das Vorhandensein des Wortes "Text" zu prüfen.
find -type f -exec sh -c "file {} | grep text >/dev/null" \; -print
oder
find -type f -exec sh -c "file {} | grep text >/dev/null" \; -ls
Mit -i
:
find -type f -exec sh -c "file -i {} | grep -v binary >/dev/null" \; -print
Mit file
ist nur eine Annäherung, da Heuristiken verwendet werden, um den Dateityp zu bestimmen, und es keine feste Definition dafür gibt, was eine "binäre" Datei ausmacht. Ist eine leere Datei "binär"? file
sagt es ist. Außerdem gibt es viele (normalerweise ungewöhnliche) Möglichkeiten, um falsch positive IDs durch file
auszulösen .
Eine andere Möglichkeit wäre, alle Dateien auszuschließen, die entweder für Benutzer, Gruppen oder andere Ausführungsberechtigungen haben:
find . -type f ! -perm /u=x,g=x,o=x
(Wenn Binär gleich Ausführungsberechtigungen ist...)