Kaip rasti konkrečią eilutę ar žodį failuose ir kataloguose


Ar norite rasti visus failus, kuriuose yra tam tikras žodis ar teksto eilutė visoje jūsų Linux sistemoje arba tam tikrame kataloge. Šiame straipsnyje sužinosite, kaip tai padaryti, sužinosite, kaip rekursyviai naršyti katalogus, kad surastumėte ir išvardintumėte visus failus, kuriuose yra nurodyta teksto eilutė.

Paprastas būdas tai išsiaiškinti yra naudoti grep šablonų paieškos įrankį, kuris yra galingas, efektyvus, patikimas ir populiariausias komandų eilutės įrankis, skirtas rasti šablonus ir žodžius iš failų ar katalogų Unix tipo sistemose.

Taip pat skaitykite: 11 pažangių Linux „Grep“ komandų simbolių klasėms ir skliaustų išraiškoms

Toliau pateiktoje komandoje bus išvardyti visi failai, kuriuose yra eilutė su tekstu „check_root “, rekursyviai ir agresyviai ieškant ~/bin kataloge.

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

Kai parinktis -R nurodo grep rekursyviai perskaityti visus failus kiekviename kataloge, naudojant simbolines nuorodas, tik jei jos yra komandinėje eilutėje ir parinktis -w< nurodo jai pasirinkti tik tas eilutes, kuriose yra atitikmenų, sudarančių ištisus žodžius, o -e naudojamas norint nurodyti eilutę (šabloną), kurios reikia ieškoti.

Turėtumėte naudoti komandą sudo, kai ieškote tam tikrų katalogų ar failų, kuriems reikia root teisių (nebent savo sistemą valdote naudodami šakninę paskyrą).

 
sudo grep -Rw / -e 'check_root'	

Norėdami nepaisyti didžiųjų ir mažųjų raidžių skirtumų, naudokite parinktį -i, kaip parodyta:

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

Jei norite sužinoti tikslią eilutę, kurioje yra teksto eilutė, įtraukite parinktį -n.

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

Darant prielaidą, kad kataloge, kuriame norite ieškoti, yra kelių tipų failai, taip pat galite nurodyti ieškomų failų tipą, pavyzdžiui, pagal jų plėtinį, naudodami parinktį --include.

Šis pavyzdys nurodo grep peržiūrėti tik visus .sh failus.

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

Be to, naudojant šią komandą galima ieškoti daugiau nei vieno šablono.

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

Viskas! Jei žinote bet kokį kitą komandinės eilutės triuką, kaip rasti eilutę ar žodį failuose, pasidalykite su mumis arba užduokite klausimų šia tema, naudokite toliau pateiktą komentarų formą.