Mám spoustu binárních souborů a vím, že uvnitř těchto binárních souborů jsou řetězce, které chci najít.

Chci udělat:

grep -lir "the string I am looking for" 

a získat seznam všech binárních souborů uvnitř konkrétního adresáře, které obsahují tento řetězec, ale grep -lir s těmito soubory zjevně nefunguje.

Existuje příkaz, který umožňuje tento druh vyhledávání z terminálu?

Odpovědět

S GNU grep , můžete použít možnost -a , aby se s binárními soubory zacházelo jako s textovými soubory:

grep -ali -- string file 

Pokud vaše verze grep nepodporuje -a, můžete použít místo . S ack 1.x musíte zahrnout možnost -a, s ack 2.x nedáte, protože při vyhledávání ve výchozím nastavení zahrnout netextový soubor (ignorováno pouze textový soubor, pokud jste nezadali žádné soubory).

Komentáře

  • Chybně čtu ack ' s vlastní popis? (v příručce) " ack 2.x prohledá každý běžný, nebinární soubor, který není výslovně ignorováno [by bla bla] " Takže to zní, jako by ack 2.x měl přestat číst soubor dříve, pokud obsah vypadá binárně.
  • @PeterCordes: K tomu ' došlo, když nebyly vybrány žádné soubory. Zkuste ack grep /bin/grep a dostanete výsledek. Aktualizoval jsem svou odpověď, abych zabránil matení.
  • Zkuste pomocí příkazu strings získat řetězce z binárního souboru.

Odpovědět

Příkaz strings bude extr jednat se všemi daty ascii ze souboru, pokud pak grep jeho výstup, můžete vyhledat svá data:

strings <filename> | grep "search text" 

Komentáře

  • Toto by měla být přijatá odpověď. Tento binární soubor je pro tento úkol vhodný.
  • @xeon: ' není vždy dobré použít strings , přečtěte si zde , kde najdete další podrobnosti.
  • Jelikož cílem je určit které binární soubory obsahují řetězec, strings -f by bylo vhodnější.
  • Toto je lepší odpověď.
  • nejlepší odpověď. moc děkuji

odpověď

Vaše otázka se týká hledání binárních souborů, které obsahují vzor (a my jsme již velmi dobré odpovědi!). Doplňkově bychom rádi získali výskyty.

Často používám

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

k získání okolního kontextu 20 znaků.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *