Jak wyszukiwać według zawartości w systemie Ubuntu

8

Chciałbym przeszukać cały serwer według zawartości. (plik tekstowy)

Kiedy próbuję grep -rl „tekst tutaj”, zawiesza się.

Jak byś to zrobił?

A jak długo to zwykle zajmuje?

webnat0
źródło

Odpowiedzi:

17

Musisz podać plik podczas korzystania z greppolecenia. Za pomocą polecenia, którego szukasz, szukasz standardowego wejścia ...

Spróbować grep -r "test" directory.

ChrisJ
źródło
7
find / -name "*.txt" -exec grep "text here" {} \; -print 2>/dev/null

Które można wytłumaczyć ludzkim mówieniem jako:

  1. odnaleźć
  2. zaczynając od /
  3. we wszystkich plikach o nazwie * .txt (cudzysłowy mają pomijać interpretację powłoki)
  4. z wynikowymi trafieniami wykonaj następujące czynności
  5. grep „test tutaj”
  6. w pliku {}
  7. end exec (\;) nie zawiera znaku końca instrukcji
  8. wydrukuj pasujące pliki
  9. przekierowuj komunikaty o błędach w zlewie (ponieważ możesz nie być rootem, w przeciwnym razie po prostu sudo).
Alain Pannetier
źródło
mówi „znajdź: brakujący argument dla„ grep ””
webnat0
pracuje tutaj. jak zastąpiłeś „test tutaj”?
Alain Pannetier
1
@Daeyun: Jest tylko jeden ukośnik odwrotny.
Wstrzymano do odwołania.
1
@Dennis. Zależy od twojego języka ojczystego. W Japonii i Korei istnieje kilka zestawów znaków, w których odwrotny ukośnik jest również renderowany jako znak jena lub znak Wonga (0x5c). Proszę również spojrzeć na u + 20E5. W przeszłości w IIS istniało kilka exploitów, w których można było eksplorować cały dysk (gdzie IIS miał swój root) komputera, po prostu mieszając prawdziwe slash i false (inny równoważny unicode przekształcony w planie ascii) i przynajmniej jeden z wykorzystaniem odwróconej nakładki Solidus.
Alain Pannetier
0

zapomniałeś określić, jakie pliki chcesz przeszukać,
zaloguj się jako root

cd /
grep -rl "text here" *  > /tmp/match.txt

zajmie to bardzo dużo czasu, a wyniki można później zebrać, sprawdzając /tmp/match.txt

ajreal
źródło
0

Następujące polecenie przeszukuje wszystkie pliki z rozszerzeniem .txt w bieżącym katalogu roboczym i wszystkich podkatalogach:

find . -type f -name '*.txt' -exec grep -Hn "text here" {} \;


źródło