Jeg har en masse binære filer, og jeg ved, at inden i disse binære filer er der strenge, jeg vil finde.

Jeg vil gøre et:

grep -lir "the string I am looking for" 

og få en liste over alle binære filer i en bestemt mappe, der indeholder den streng, men grep -lir fungerer tilsyneladende ikke med disse filer.

Er der en kommando, der kan udføre denne form for søgning fra terminalen?

Svar

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

grep -ali -- string file 

Hvis din grep-version ikke understøtter -a, kan du bruge ack i stedet. Med ack 1.x skal du medtage -a valgmulighed, med ack 2.x behøver du ikke, da du ved søgning inkluderer ikke-tekstfil som standard (kun ignoreret ikke- tekstfil, når du ikke angav nogen filer).

Kommentarer

  • Fejllæser jeg ack ' s selvbeskrivelse? (i manualen) " ack 2.x søger gennem hver almindelig, ikke-binær fil, der ikke er eksplicit ignoreret [af bla bla] " Så det lyder som om ack 2.x stadig skal stoppe med at læse en fil tidligt, hvis indholdet ser binært ud.
  • @PeterCordes: At ' opstod, da der ikke blev valgt nogen filer. Prøv ack grep /bin/grep, så får du resultatet. Jeg opdaterede mit svar for at forhindre forvirring.
  • Prøv at bruge strengekommandoen for at hente strengene fra din binære.

Svar

Kommandoen strings ekstr handle alle ascii-data fra en fil, hvis du derefter grep dens output, kan du søge efter dine data:

strings <filename> | grep "search text" 

Kommentarer

  • Dette skal være det accepterede svar. Denne binære funktion er god til denne opgave.
  • @xeon: Den ' er ikke altid god at bruge strings , læs her for flere detaljer.
  • Da målet er at bestemme hvilke binære filer der indeholder strengen, strings -f ville være mere passende.
  • Dette er et bedre svar.
  • det bedste svar. mange tak

Svar

Dit spørgsmål handler om at finde binære filer, der indeholder et mønster (og vi har allerede meget gode svar!). Supplerende kan vi godt lide at hente forekomsterne.

Jeg bruger ofte

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

for at få en omgivende kontekst med 20 tegn.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *