file /usr/bin/file
, par exemple, n'inclut pas le mot "binary" dans sa sortie sur mon système. Si file -i
est disponible, il inclut le mot "binaire". Sans -i
, il peut être plus fiable de tester la présence du mot "texte".
find -type f -exec sh -c "file {} | grep text >/dev/null" \; -print
ou
find -type f -exec sh -c "file {} | grep text >/dev/null" \; -ls
Utilisation de -i
:
find -type f -exec sh -c "file -i {} | grep -v binary >/dev/null" \; -print
Utilisation de file
ne sera qu'une approximation car il utilise l'heuristique pour déterminer le type de fichier et il n'y a pas de définition précise de ce qui constitue un fichier "binaire". Un fichier vide est-il "binaire" ? file
dit que c'est. De plus, il existe de nombreuses façons (normalement peu courantes) de déclencher de faux ID positifs par file
.
Une autre méthode consisterait à exclure tous les fichiers pour lesquels l'autorisation d'exécution est définie pour l'utilisateur, le groupe ou d'autres :
find . -type f ! -perm /u=x,g=x,o=x
(Si binaire équivaut à des autorisations d'exécution...)