Как подавить результаты сопоставления двоичных файлов в grep [закрыто]

215

При использовании grepв Linux результат часто содержит множество «совпадений двоичного файла XXX», которые меня не волнуют. Как подавить эту часть результатов или как исключить двоичные файлы в grep?

RandyTek
источник
12
grep -I .........
1
@skwllsp Но с параметром -l результаты не содержат совпавшей строки, только с совпавшим именем файла.
RandyTek
Есть опция для строк: grep -I -n -H
6
Это не по теме? Wow
CoffeeTableEspresso

Ответы:

302

Есть три варианта, которые вы можете использовать. -Iэто исключить двоичные файлы в grep. Другие для номеров строк и имен файлов.

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

Так что это может быть способ запустить grep:

grep -InH your-word *
user184968
источник
это работает. Спасибо @skwllsp
RandyTek
7
Я бы использовал, -Irnгде rрасшифровывается, чтобы заглянуть внутрь всех папок. Hздесь чрезмерно
vladkras
@vladkras, «H здесь чрезмерно» - вы имеете в виду избыточность, то есть это уже значение по умолчанию?
cp.engr
Спасибо за разъяснение, что означают короткие варианты в вашем ответе. Есть так много кратких ответов на команды linux на SO, которые не дают объяснений, что меня раздражает.
Джрахали
1
@AaronFranke: -nфлаг указывает grep сообщать номера строк файлов, в которых найдено совпадение. «На основе 1» означает, что подсчет строк начинается с единицы, а не с нуля, как это часто делается в программировании. Итак, если первая строка вашего файла example.txtназывается Hello, world, вторая строка Hello cat, а третья строка cats are cool, то при поиске «cat» через grep -n cat example.txt, вы получите example.txt:2: Hello catи example.txt:3: cats are cool.
jvriesem
11

Это старый вопрос, и на него дан ответ, но я решил поставить опцию --binary-files = text для всех, кто хочет его использовать. Опция -I игнорирует двоичный файл, но если вы хотите, чтобы grep рассматривал двоичный файл как текстовый файл, используйте --binary-files = text следующим образом:

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
источник