Kako pronaći određeni string ili riječ u datotekama i direktorijima


Želite li pronaći sve datoteke koje sadrže određenu riječ ili niz teksta na cijelom vašem Linux sistemu ili datom direktoriju. Ovaj članak će vas uputiti kako to učiniti, naučit ćete kako rekurzivno kopati po direktorijima da biste pronašli i izlistali sve datoteke koje sadrže dati niz teksta.

Jednostavan način da se ovo riješi je korištenje alata za pretraživanje grep šablona, moćnog, efikasnog, pouzdanog i najpopularniji uslužni program komandne linije za pronalaženje obrazaca i riječi iz datoteka ili direktorija na sistemima sličnim Unixu.

Pročitajte također: 11 naprednih Linux "Grep" naredbi o klasama znakova i izrazima zagrada

Naredba ispod će prikazati sve datoteke koje sadrže red s tekstom “check_root”, rekurzivnim i agresivnim pretraživanjem ~/bin direktorija.

grep -Rw ~/bin/ -e 'check_root'

Gdje opcija -R govori grep da čita sve datoteke u svakom direktoriju, rekurzivno, slijedeći simboličke veze samo ako su na komandnoj liniji i opciju -w< ga nalaže da odabere samo one redove koji sadrže podudaranja koja čine cijele riječi, a -e se koristi za specificiranje niza (uzorka) koji će se pretraživati.

Trebali biste koristiti naredbu sudo kada pretražujete određene direktorije ili datoteke koje zahtijevaju root dozvole (osim ako svojim sistemom upravljate s root računom).

 
sudo grep -Rw / -e 'check_root'	

Da zanemarite razlike između velikih i malih slova, koristite opciju -i kao što je prikazano:

grep -Riw ~/bin/ -e 'check_root'

Ako želite da znate tačnu liniju u kojoj postoji niz teksta, uključite opciju -n.

grep -Rinw ~/bin/ -e 'check_root'

Pod pretpostavkom da postoji nekoliko tipova fajlova u direktorijumu u kojem želite da pretražujete, takođe možete odrediti tip fajlova koji će se pretraživati, na primer, po njihovoj ekstenziji koristeći opciju --include.

Ovaj primjer upućuje grep da pregleda samo sve datoteke .sh.

grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'

Osim toga, moguće je tražiti više od jednog uzorka, koristeći sljedeću naredbu.

grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'

To je to! Ako znate bilo koji drugi trik naredbene linije za pronalaženje niza ili riječi u datotekama, podijelite s nama ili postavite bilo kakva pitanja u vezi sa ovom temom, koristite obrazac za komentare ispod.