Kako najti določen niz ali besedo v datotekah in imenikih


Ali želite poiskati vse datoteke, ki vsebujejo določeno besedo ali niz besedila v celotnem sistemu Linux ali v določenem imeniku. Ta članek vas bo vodil, kako to storiti, naučili se boste, kako rekurzivno kopati po imenikih, da poiščete in navedete vse datoteke, ki vsebujejo dani niz besedila.

Enostaven način, da to rešite, je z orodjem za iskanje vzorcev grep, ki je zmogljiv, učinkovit, zanesljiv in najbolj priljubljen pripomoček ukazne vrstice za iskanje vzorcev in besed iz datotek ali imenikov v sistemih, podobnih Unixu.

Spodnji ukaz bo navedel vse datoteke, ki vsebujejo vrstico z besedilom\"check_root", z rekurzivnim in agresivnim iskanjem v imeniku ~/bin .

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

Kjer možnost -R pove grepu, naj prebere vse datoteke v vsakem imeniku, rekurzivno, sledi simbolnim povezavam le, če so v ukazni vrstici, in možnost -w mu naroči, naj izbere samo tiste vrstice, ki vsebujejo ujemanja s tem obrazcem cele besede in -e se uporablja za določitev niza (vzorca) za iskanje.

Pri iskanju določenih imenikov ali datotek, ki zahtevajo korenska dovoljenja, morate uporabiti ukaz sudo (razen če sistema upravljate s korenskim računom).

 
$ sudo grep -Rw / -e 'check_root'	

Če želite prezreti razlikovanje velikih in malih črk, uporabite možnost -i , kot je prikazano:

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

Če želite vedeti točno vrstico, kjer obstaja niz besedila, vključite možnost -n .

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

Ob predpostavki, da v imeniku, v katerem želite iskati, obstaja več vrst datotek, lahko določite tudi vrsto datotek, ki jih želite iskati, na primer z njihovo razširitvijo z možnostjo --include .

V tem primeru grep naroči, naj samo pregleda vse datoteke .sh .

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

Poleg tega je mogoče z naslednjim ukazom iskati več vzorcev.

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

To je To! Če poznate kakšen drug trik ukazne vrstice za iskanje niza ali besede v datotekah, delite z nami ali zastavite kakršna koli vprašanja v zvezi s to temo, uporabite spodnji obrazec za komentar.