Comment supprimer les résultats de correspondance de fichiers binaires dans grep [fermé]

215

Lors de l'utilisation grepsous linux, le résultat contient souvent beaucoup de "correspondances de fichiers binaires XXX", ce qui ne m'importe pas. Comment supprimer cette partie des résultats, ou comment exclure des fichiers binaires dans grep?

RandyTek
la source
12
grep -I .........
1
@skwllsp Mais avec -l, les résultats ne contiennent pas la ligne correspondante, seulement avec le nom de fichier correspondant.
RandyTek
Il existe une option pour les lignes: grep -I -n -H
6
C'est hors sujet? Wow
CoffeeTableEspresso

Réponses:

302

Il existe trois options que vous pouvez utiliser. -Iconsiste à exclure les fichiers binaires dans grep. D'autres concernent les numéros de ligne et les noms de fichiers.

grep -I -n -H 


-I -- process a binary file as if it did not contain matching data; 
-n -- prefix each line of output with the 1-based line number within its input file
-H -- print the file name for each match

Donc, cela pourrait être un moyen d'exécuter grep:

grep -InH your-word *
utilisateur184968
la source
cela marche. Thx @skwllsp
RandyTek
7
J'utiliserais -Irnrsignifie récursif pour regarder à l'intérieur de tous les dossiers. Hest exsessive ici
vladkras
@vladkras, "H est excessif ici" - vous voulez dire redondant, c'est-à-dire que c'est déjà la valeur par défaut?
cp.engr
Merci d'avoir clarifié la signification des options courtes dans votre réponse. Il y a tellement de réponses de commandes linux laconiques sur SO qui ne donnent aucune explication, ce que je trouve ennuyeux.
jrahhali
1
@AaronFranke: l' -nindicateur indique à grep de signaler les numéros de ligne des fichiers dans lesquels il a trouvé une correspondance. "Basé sur 1" signifie que le comptage de lignes commence à partir de un plutôt que de zéro, comme cela se fait souvent en programmation. Donc, si la première ligne de votre fichier example.txtest nommée Hello, world, la deuxième ligne est Hello cat, et la troisième ligne est cats are cool, puis en recherchant "cat" via grep -n cat example.txt, vous obtiendrez example.txt:2: Hello catet example.txt:3: cats are cool.
jvriesem
11

C'est une vieille question à laquelle il a été répondu, mais je pensais que je mettrais l'option --binary-files = text ici pour tous ceux qui veulent l'utiliser. L'option -I ignore le fichier binaire mais si vous voulez que grep traite le fichier binaire comme un fichier texte, utilisez --binary-files = text comme ceci:

bash$ grep -i reset mediaLog*
Binary file mediaLog_dc1.txt matches
bash$ grep --binary-files=text -i reset mediaLog*
mediaLog_dc1.txt:2016-06-29 15:46:02,470 - Media [uploadChunk  ,315] - ERROR - ('Connection aborted.', error(104, 'Connection reset by peer'))
mediaLog_dc1.txt:ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))
bash$
amadain
la source