Kā atrast noteiktu virkni vai vārdu failos un direktorijos


Vai jūs vēlaties atrast visus failus, kas satur noteiktu vārdu vai teksta virkni, visā jūsu Linux sistēmā vai norādītajā direktorijā. Šis raksts palīdzēs jums to izdarīt. Jūs uzzināsiet, kā rekursīvi izpētīt direktorijus, lai atrastu un uzskaitītu visus failus, kas satur noteiktu teksta virkni.

Vienkāršs veids, kā to izdarīt, ir grep modeļu meklēšanas rīka izmantošana, tas ir spēcīgs, efektīvs, uzticams un populārākais komandrindas utilīts, lai atrastu modeļus un vārdus no failiem vai direktorijiem Unix līdzīgās sistēmās.

Zemāk esošajā komandā tiks uzskaitīti visi faili, kuros ir rinda ar tekstu “check_root”, rekursīvi un agresīvi meklējot direktorijā ~/bin .

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

Ja opcija -R liek grep lasīt visus failus katrā direktorijā rekursīvi, sekojot simboliskām saitēm tikai tad, ja tie atrodas komandrindā, un opcija -w uzdod tai atlasīt tikai tās rindas, kurās ir atbilstošās formas veseli vārdi, un -e tiek izmantots, lai norādītu meklējamo virkni (rakstu).

Jums vajadzētu izmantot sudo komandu, meklējot noteiktus direktorijus vai failus, kuriem nepieciešamas root atļaujas (ja vien jūs nepārvaldāt savu sistēmu ar root kontu).

 
$ sudo grep -Rw / -e 'check_root'	

Lai ignorētu reģistru atšķirības, izmantojiet opciju -i , kā parādīts:

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

Ja vēlaties uzzināt precīzu rindiņu, kurā pastāv teksta virkne, iekļaujiet opciju -n .

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

Pieņemot, ka direktorijā, kurā vēlaties meklēt, ir vairāku veidu faili, varat norādīt arī meklējamo failu tipu, piemēram, paplašinot tos, izmantojot opciju --include .

Šis piemērs liek grep meklēt tikai visus .sh failus.

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

Turklāt ir iespējams meklēt vairākus modeļus, izmantojot šādu komandu.

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

Tieši tā! Ja jūs zināt kādu citu komandrindas triku, lai failos atrastu virkni vai vārdu, kopīgojiet ar mums vai uzdodiet jautājumus par šo tēmu, izmantojiet zemāk esošo komentāru veidlapu.