Si të grep Kërkoni për emrat e skedarëve në vend të përmbajtjes në Linux


grep është një mjet Linux që përdoret zakonisht për të kërkuar skedarë teksti për përmbajtje specifike. Megjithatë, shpesh është e dobishme të kërkoni direktori për emrat e skedarëve në vend të përmbajtjes së skedarëve dhe kjo mund të bëhet me grep dhe shërbime të tjera të linjës së komandës Linux

Përdorimi i gjetjes në vend të grep

Shërbimi grep në thelb merr hyrjen e vargut nga skedarët ose hyrjet standarde dhe përdor modele ose Regex për të kërkuar nëpër të dhe për të printuar linja që përputhen.

Ju mund të përdorni teknikisht grep për të kërkuar emrat e skedarëve në vend të përmbajtjes, por kjo ndodh vetëm sepse Linux lejon shkronja të ngurta në hyrjet e emrave të skedarit. Megjithatë, ju mund të përdorni po aq lehtë ls për të renditur skedarët në këtë mënyrë, ose të përdorni shkronja të ngurta në ndonjë komandë tjetër dhe nuk është një zgjidhje e vërtetë për kërkimin e emrave të skedarëve si grep kërkon përmbajtje.

grep "" ./file* -l

Zgjidhja e vërtetë është përdorimi i programit find , i cili mund të kërkojë nëpër nëndrejtori dhe ofron mënyrën më elastike për të kërkuar skedarë pasi ndërvepron drejtpërdrejt me sistemin e skedarëve. Ky është mjeti më i përdorur për kërkimin nëpër drejtori dhe ka shumë opsione, duke përfshirë përputhjen e modeleve dhe mbështetjen e Regex.

Përdorimi më themelor është përdorimi i find për të printuar një listë skedarësh, duke përfshirë nëndrejtoritë, dhe për të futur atë hyrje në grep. Nëse tashmë keni skripta duke përdorur grep, do të jetë shumë e lehtë t'i konvertoni ato në përputhje në këtë mënyrë.

find | grep "file"

Ju gjithashtu mund të përdorni modele drejtpërdrejt me find, duke eliminuar nevojën për grep. Përdorni -iname me një hyrje.

find . -iname 'file_*.txt'

Ndryshe nga grep megjithatë, komanda find është pak më e rreptë—ju duhet të përdorni thonjëza të vetme ose të dyfishta për t'i shpëtuar vargut të kërkimit dhe duhet të përdorni shkronja të ngurta për të përputhur të gjithë vargun. Thjesht gjetja e një nënvargu në emër nuk është e mundur pa përdorur shkronja të egra që të përputhen me pjesën tjetër të emrit.

Përdorimi i shprehjeve të rregullta (Regex) Me find

Ju gjithashtu mund të përdorni shprehje të rregullta me find, e cila lejon përputhje shumë më të avancuar:

find . -regex './file.*'

Ky regex do të përputhet me të gjithë skedarët në drejtorinë aktuale duke filluar me skedar. Megjithatë, është e rëndësishme të jeni të vetëdijshëm se kjo funksionon ndryshe nga -iname; hyrja përfshin shtegun e plotë të drejtorisë dhe duhet të përdorë ./ për t'i shpëtuar shtegut përkatës, ./.

Kjo komandë e paraqitur këtu po përjashton dosjen ./subdirectory/, sepse nuk fillon me skedar. Për ta rregulluar këtë, duhet të përputhësh gjithçka që çon në prerjen përfundimtare përpara me .*/:

find . -regex '.*/file.*'

Shprehjet e rregullta janë shumë të ndërlikuara, por shumë të fuqishme. Nëse dëshironi të mësoni më shumë, mund të lexoni udhëzuesin tonë se si funksionojnë ato.