Mam kilka plików binarnych i wiem, że wewnątrz tych plików binarnych są ciągi, które chcę znaleźć.
Chcę zrobić:
grep -lir "the string I am looking for"
i uzyskać listę wszystkich plików binarnych w określonym katalogu, który zawiera ten ciąg, ale grep -lir
najwyraźniej nie działa z tymi plikami.
Czy istnieje polecenie, które może wykonywać tego rodzaju wyszukiwanie z terminala?
ack
z opisem własnym? (w podręczniku) „ack 2.x przeszuka każdy zwykły plik niebinarny, który nie jest wyraźnie ignorowany [przez bla bla]]„ Wygląda więc na to, że ack 2.x powinien przestać czytać plik wcześniej, jeśli zawartość wygląda dwójkowy.ack grep /bin/grep
a otrzymasz wynik. Zaktualizowałem swoją odpowiedź, aby uniknąć pomyłek.Polecenie
strings
wyodrębni wszystkie dane ascii z pliku, jeśli następniegrep
jego dane wyjściowe, możesz wyszukać swoje dane:źródło
strings
, przeczytaj tutaj, aby uzyskać więcej informacji.strings -f
byłoby bardziej odpowiednie.Twoje pytanie dotyczy znalezienia plików binarnych zawierających wzorzec (a my mamy już bardzo dobre odpowiedzi!). Uzupełniające możemy chcieć uzyskać zdarzenia.
Często używam
uzyskać otaczający kontekst 20 znaków.
źródło