logo

Raskite komandą „Linux“ / „Unix“ su pavyzdžiais

Komanda rasti padeda mums rasti tam tikrą failą kataloge. Jis naudojamas įvairių sąlygų, pvz., leidimo, vartotojo nuosavybės, modifikavimo, datos / laiko, dydžio ir kt., failų sąrašui rasti.

„Unix“ tipo ir kitose operacinėse sistemose komanda rasti yra komandų eilutės programa, kuri suranda failus pagal kelis vartotojo nurodytus formatus ir išspausdina visus atitikusio objekto kelio pavadinimus arba, jei reikia atlikti kitus veiksmus, įgyvendina tą veiksmą visi atitikę objektai.

Jis pradeda paiešką nuo norimos pradžios vietos ir po to rekursyviai kerta hierarchinės struktūros (paprastai medžio) katalogus (mazgus). Komanda rasti gali ieškoti ir naršyti iš skirtingų failų skaidinių sistemų, priklausančių vienam ar daugiau saugojimo įrenginių pradiniame kataloge.

Paieškos formate yra šablonas, skirtas suderinti su failo pavadinimu arba laiko intervalas, skirtas suderinti su modifikavimo laiku arba failo prieigos laiku. Pagal numatytuosius nustatymus komanda rasti pateikia visų failų, esančių dabartiniame darbiniame kataloge, sąrašą. Tačiau vartotojai gali apriboti paiešką iki pageidaujamo didžiausio lygio pradiniame kataloge.

Susietos vietos nustatymo programos taiko indeksuotų failų duomenų bazę, gautą iš baudos komandos, kad būtų galima greičiau ieškoti visos failų sistemos pagal pavadinimą.

Pagal numatytuosius nustatymus paieškos įrankis pateikiamas su dauguma Linux distribucijos , todėl mums nereikia diegti jokio papildomo paketo. Tai viena iš būtiniausių ir naudojamų komandų Linux sistema.

 find 

Abi parinktys nustato, kaip ieškant turėtų būti atsižvelgiama į simbolines nuorodas. Numatytoji prigimtis niekada nesiekti simbolinių ryšių. Vėliava, t.y. -L , paskatins rasti siekti simbolinių nuorodų. Vėliava, t.y. -H , tik sieks simbolinių nuorodų, tęsdama komandinės eilutės argumentus. Vėliavos yra paminėtos POSIX standarte, skirtoje rasti komandai. Pagrindinis plėtinys yra vėliavėlė, t.y. -P , kad aiškiai išjungtumėte toliau pateiktą simbolinę nuorodą.

Bent jau kelias turi numatyti išraišką. Komanda rasti gali iš vidaus interpretuoti pakaitos simbolius, o komandos turi būti atidžiai cituojamos, kad būtų galima valdyti apvalkalo globą.

Išraiškos komponentai yra atskirti komandinės eilutės argumento riba, paprastai nurodoma kaip tarpas apvalkalo sintaksėje. Jie svarstomi iš kairės į dešinę. Jie gali apimti loginius komponentus, tokius kaip OR ir AND, taip pat predikatus (veiksmus ir filtrus). GNU atradimas turi keletą kitų funkcijų, kurių POSIX nepaminėjo.

Katalogui nurodyti naudojami šie simboliai:

(.) : dabartiniam katalogo pavadinimui

(/) : šakniniam katalogui

Trumpa komandos „Find“ istorija

Komanda rasti buvo pateikta Unix 5 versijoje kaip elementas Programuotojo darbo stalas projektą ir nurodė Dikas Haightas su cpio, kurie buvo sukurti naudoti kartu.

Iš pradžių paieškos komandos GNU įgyvendinimą nurodė Erikas Deckeris . Vėliau jį sukūrė Davidas MacKenzie, Timas Woodas , ir Džejus Plettas . Be to, komanda rasti buvo perkelta į IBM i OS.

jei kitaip, jei java

Predikatai

Plačiai naudojami pirminiai:

    - vardo modelis:Ji patikrina, ar failo pavadinimas yra toks pat kaip nurodytas shell-glob modelis, ar ne.- tipo tipas:Ji patikrina, ar failas yra nurodyto tipo.- spausdinti:Tai visada suteikia tikrąją vertę. Jis išspausdina dabartinį failo pavadinimą ir naują eilutę į stdout.-print0:Tai visada suteikia tikrąją vertę. Jis išspausdina dabartinį failo pavadinimą ir nulinį simbolį į stdout. Nereikia POSIX.-exec programa [argumentas ...];:Tai visada suteikia tikrąją vertę. Jis vykdo programą su nustatytais argumentais ir dabartiniu failo keliu.-exec programa [argumentas ...] { } +:Tai visada suteikia tikrąją vertę. Jis vykdo programą su fiksuotais nurodytais argumentais ir kiek įmanoma keliais keliais. Beveik kiekviename diegime kiti {} atvejai reiškia papildomas nurodyto vardo kopijas (aspektas nereikalingas POSIX).-gerai programa [argumentas ...];:Tai tas pats, kas -exec, bet grąžins false arba true, jei programa duos 0.

Raskite numatytuosius diegimo -print nustatymus, jei sąlygos yra teisingos, jei išraiška nenaudoja nė vieno iš -ok, -exec, -print arba -print0.

Operatoriai

Operatoriai pagerina paieškos komandų išraiškas. Jie minimi mažėjančia tvarka:

    ( galiojimo laikas ):Šis operatorius gali taikyti pirmenybę.! expr:Jei expr grąžina false, jis grąžina teisingą.
  • expr1 expr2 (arba expr1 -a expr2 : AND. expr2 neįvertinamas, jei expr1 yra klaidingas.
  • expr1 -o expr2 : ARBA. expr2 neįvertinamas, jei expr1 yra teisingas.

Rasti komandos pavyzdžiai

Pažiūrėkime šiuos paieškos komandos pavyzdžius:

Raskite failus pagal pavadinimą

Galime ieškoti visų failų, kurie baigiasi plėtiniu „.txt“. Norėdami tai padaryti, vykdykite žemiau esančią komandą:

 find . -name '*.txt' 

Aukščiau pateikta komanda išvardys visus tekstinius failus iš dabartinio darbo katalogo. Apsvarstykite toliau pateiktą išvestį:

„Linux“ paieška

Iš aukščiau pateiktos išvesties visi failai su plėtiniu '.txt' pateikiami su komanda rasti.

Failų paieška pagal tipą

Parametras „-type“ naudojamas failo tipui nurodyti.

Kai kurie failų tipai yra tokie:

  • f: įprastas failas
  • d: katalogas
  • l: simbolinės nuorodos
  • c: simbolių įrenginiai
  • b: blokuoti įrenginius

Apsvarstykite toliau pateiktą komandą:

 find . -type d -name '*.bak' 

Aukščiau pateiktoje komandoje bus išvardyti visi katalogai su plėtiniu '.bak'. Apsvarstykite toliau pateiktą išvestį:

„Linux“ paieška

Iš aukščiau pateiktos išvesties komanda „rasti . -type d -name '*.bak' rodo visus katalogus, kurie baigiasi '.bak'.

vienvietis dizainas

Raskite naujesnius failus

Parametras „-naujesnis“ padeda ieškoti failų, kurie yra naujesni nei minėtasis failas. Apsvarstykite toliau pateiktą komandą:

 find . -newer msg.txt 

Aukščiau pateikta komanda parodys visus failus, kurie yra naujesni nei 'msg.txt' iš dabartinio darbo katalogo. Apsvarstykite toliau pateiktą išvestį:

„Linux“ paieška

Iš anksčiau pateiktos išvesties visi rodomi failai yra naujesni nei failas „msg.txt“.

Raskite ir ištrinkite failą

Parinktis „-delete“ naudojama konkrečiam failui ištrinti. Naudodami šią komandą turime būti labai atsargūs, nes kartą įvykdžius anuliavimo parinkties nėra. Apsvarstykite toliau pateiktą komandą:

 find . -name Demo.txt -delete 

Aukščiau pateikta komanda ištrins failą „Demo.txt“ iš dabartinio darbo katalogo. Apsvarstykite toliau pateiktą išvestį:

„Linux“ paieška

Raskite katalogą

Parinktis „type -d“ naudojama katalogui rasti. Apsvarstykite toliau pateiktą komandą:

 find . type -depth -name Newdirectory 

Aukščiau pateikta komanda ras vietą „Naujas katalogas“. Apsvarstykite toliau pateiktą išvestį:

„Linux“ paieška

Raskite failus pagal modifikavimo laiką

Parinktis „-mtime“, po kurios nurodomas dienų skaičius, naudojama failams rasti modifikuojant. Dienų skaičius gali būti teigiamas arba neigiamas. Neigiama reikšmė bus naudojama mažiau nei kaip -1 naudojama paskutinę dieną, ir panašiai +1 suras failą prieš daugiau nei vieną dieną. Apsvarstykite toliau pateiktą komandą:

 find ./Newdirectory -mtime -1 

Aukščiau pateikta komanda suras failus, kurie buvo modifikuoti per paskutinę dieną. Apsvarstykite toliau pateiktą išvestį:

„Linux“ paieška

Raskite failus pagal leidimą

Parinktis „-perm“ naudojama failams rasti pagal leidimą. Vykdykite paieškos komandą naudodami parinktį „-perm“ ir perduokite reikiamą reikšmę. Apsvarstykite toliau pateiktą komandą:

 find ./ -perm 777 

Pirmiau pateiktoje komandoje bus išvardyti failai iš nurodyto katalogo, kuriuos visi galėtų skaityti, rašyti ir vykdyti.

Raskite ir pakeiskite failus

Norėdami rasti ir pakeisti failus, turime derinti komandą find su komanda sed. Norėdami dirbti su failais, naudokite parinktį „-exec“ su komanda rasti. Apsvarstykite toliau pateiktą komandą:

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

iš aukščiau pateiktos komandos nurodytas įvykis bus pakeistas. Apsvarstykite toliau pateiktą išvestį:

tinklo topologija
„Linux“ paieška

Raskite tekstą keliuose failuose

Norėdami rasti tekstą iš įvairių failų, galime sukurti kitą paieškos komandos derinį su grep komanda. Apsvarstykite toliau pateiktą komandą:

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

Aukščiau pateikta komanda suras eilutes, kuriose yra tekstas „demo“ iš visų tekstinių failų, esančių kataloge „Newdirectory“. Apsvarstykite toliau pateiktą išvestį:

„Linux“ paieška

Iš aukščiau pateiktos išvesties matome eilutes, kuriose buvo rodomas tekstas „demo“.

Ieškokite kiekviename kataloge

 $ find / -name file1 -type f -print 

Aukščiau pateikta komanda suranda visus įprasto failo, kurio pavadinimas yra failas1, katalogus ir išspausdina jį ekrane. Paprastai tokiu būdu ieškoti failų nėra gera idėja. Tai gali užtrukti nemažai laiko. Taigi, geriausia paminėti katalogą. Kai kurios operacinės sistemos gali prijungti failų sistemas (dinamines), kurios nėra palankios komandai rasti. Sudėtingesnius failų pavadinimus, kuriuose yra unikalių apvalkalo simbolių, gali tekti uždaryti vienose kabutėse.