Quando si utilizza grep
in Linux, il risultato spesso contiene molte "corrispondenze di file binari XXX", di cui non mi interessa. Come sopprimere questa parte dei risultati o come escludere i file binari in grep?
Quando si utilizza grep
in Linux, il risultato spesso contiene molte "corrispondenze di file binari XXX", di cui non mi interessa. Come sopprimere questa parte dei risultati o come escludere i file binari in grep?
Risposte:
Esistono tre opzioni che è possibile utilizzare. -I
è di escludere file binari in grep. Altri sono per numeri di riga e nomi di file.
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
Quindi questo potrebbe essere un modo per eseguire grep:
grep -InH your-word *
-Irn
dove r
sta ricorsivo per guardare dentro tutte le cartelle. H
è eccessivo qui
-n
bandiera dice a grep di riportare il numero di riga dei file in cui ha trovato una corrispondenza. "1-based" significa che il conteggio delle righe inizia da uno anziché da zero, come spesso accade in programmazione. Quindi, se la prima riga del file di nome example.txt
è Hello, world
, la seconda linea è Hello cat
, e la terza linea è cats are cool
, quindi alla ricerca di "gatto" via grep -n cat example.txt
, ti aspetteresti example.txt:2: Hello cat
e example.txt:3: cats are cool
.
Questa è una vecchia domanda a cui è stata data risposta ma ho pensato di mettere qui l'opzione --binary-files = text per chiunque voglia usarla. L'opzione -I ignora il file binario ma se vuoi che grep tratti il file binario come un file di testo usa --binary-files = text in questo modo:
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$