Jeg har en haug med binærfiler, og jeg vet at inne i disse binærfiler er det strenger jeg vil finne.

Jeg vil gjøre en:

grep -lir "the string I am looking for" 

og få en liste over alle binære filer i en bestemt katalog som inneholder den strengen, men grep -lir fungerer tilsynelatende ikke med disse filene.

Er det en kommando som kan gjøre denne typen søk fra terminal?

Svar

Med GNU grep , kan du bruke -a alternativet for å få det til å behandle binære filer som tekstfiler:

grep -ali -- string file 

Hvis grep-versjonen din ikke støtter -a, kan du bruke ack i stedet. Med ack 1.x må du inkludere -a -alternativet, med ack 2.x trenger du ikke, siden du når du søker inkluderer ikke-tekstfiler som standard (bare ignorert ikke- tekstfil når du ikke spesifiserte noen filer).

Kommentarer

  • Feilleser jeg ack ' s egen beskrivelse? (i manualen) " ack 2.x vil søke gjennom alle vanlige, ikke-binære filer som ikke er eksplisitt ignorert [av bla bla] " Så det høres ut som at ack 2.x fortsatt skal slutte å lese en fil tidlig hvis innholdet ser binært ut.
  • @PeterCordes: At ' skjedde da ingen filer ble valgt. Prøv ack grep /bin/grep, så får du resultatet. Jeg oppdaterte svaret mitt for å forhindre forvirring.
  • Prøv å bruke strengekommandoen for å hente strengene fra binærfilen din.

Svar

Kommandoen strings vil ekstr handle alle ascii-data fra en fil, hvis du deretter grep dens utdata, kan du søke etter dataene dine:

strings <filename> | grep "search text" 

Kommentarer

  • Dette skal være det aksepterte svaret. Denne binæren passer godt for denne oppgaven.
  • @xeon: Det ' er ikke alltid bra å bruke strings , les her for mer informasjon.
  • Siden målet er å bestemme hvilke binære filer som inneholder strengen, strings -f ville være mer passende.
  • Dette er et bedre svar.
  • det beste svaret. tusen takk

Svar

Spørsmålet ditt handler om å finne binære filer som inneholder et mønster (og vi har allerede veldig gode svar!). Utfyllende kan det være lurt å hente forekomster.

Jeg bruker ofte

grep -aPo ".{0,20}pattern.{0,20}" binfile 

for å få en omgivende kontekst av 20-tegn.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *