Utiliser :
find /dir/to/search -type f | xargs file | grep text
find
vous donnera une liste de fichiers.
xargs file
exécutera le file
commande sur chacune des lignes de l'entrée canalisée.
trouver et fichier sont vos amis ici :
find /dir/to/search -type f -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print
Cela trouvera tous les fichiers (NOTE :il ne trouvera pas les sockets des répertoires de liens symboliques, etc., uniquement les fichiers normaux) dans /dir/to/search et exécutez sh -c 'fichier -b {} | grep texte &>/dev/null' ; qui examine le type de fichier et recherche du texte dans la description. Si cela renvoie vrai (c'est-à-dire que le texte est dans la ligne), le nom du fichier est imprimé.
REMARQUE :l'utilisation de l'indicateur -b pour le fichier signifie que le nom du fichier n'est pas imprimé et ne peut donc pas créer de problèmes avec le grep . Par exemple, sans le -b
signaler que le fichier binaire gettext serait détecté par erreur comme un fichier texte.
Par exemple,
[email protected]# find /bin -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print
/bin/gunzip
/bin/svnshell.sh
/bin/unicode_stop
/bin/unicode_start
/bin/zcat
/bin/redhat_lsb_init
[email protected]# find /bin -type f -name *text*
/bin/gettext
Si vous voulez regarder dans les fichiers compressés, utilisez le --uncompress
drapeau au fichier. Pour plus d'informations et les drapeaux à déposer, voir le fichier man.