Find-komento auttaa meitä löytämään tietyn tiedoston hakemistosta. Sitä käytetään tiedostoluettelon etsimiseen eri ehdoilla, kuten luvalla, käyttäjän omistajuudella, muokkauksella, päivämäärällä/kellonajalla, kokolla ja muilla.
Unix-tyyppisissä ja muissa käyttöjärjestelmissä find-komento on komentorivityökalu, joka etsii tiedostoja muutaman käyttäjän määrittämän muodon perusteella ja joko tulostaa kaikki vastaavan objektin polunimet tai, jos muita toimia pyydetään, toteuttaa toiminnon kaikki vastaavat objektit.
Se aloittaa haun halutusta aloituspaikasta ja sen jälkeen kulkee rekursiivisesti hierarkkisen rakenteen (yleensä puun) hakemistojen (solmujen) läpi. Find-komento voi etsiä ja kulkea eri tiedostoosiojärjestelmistä, jotka kuuluvat yhteen tai useampaan tallennuslaitteeseen aloitushakemiston alla.
Hakumuoto sisältää mallin sovittamiseksi tiedostonimen kanssa tai aikavälin sovittamiseksi muokkausaikaan tai tiedoston käyttöaikaan. Find-komento tarjoaa oletusarvoisesti luettelon kaikista nykyisen työhakemiston tiedostoista. Käyttäjät voivat kuitenkin rajoittaa haun halutulle enimmäistasolle aloitushakemistossa.
Liittyvät paikannusohjelmat käyttävät hienokomennolla saatua indeksoitua tiedostotietokantaa tarjotakseen nopeamman tekniikan koko tiedostojärjestelmän etsimiseen nimen perusteella.
Etsi-apuohjelma tulee oletuksena useimpien Linux-distroja , joten meidän ei tarvitse asentaa lisäpakettia. Se on yksi tärkeimmistä ja käytetyimmistä komennoista Linux järjestelmä.
find
Nämä kaksi vaihtoehtoa määrittävät, kuinka haun tulisi ottaa huomioon symboliset linkit. Oletusluonne ei ole koskaan tavoitella symbolisia linkkejä. Lippu, ts. -L , johtaa etsinnän tavoittelemaan symbolisia linkkejä. Lippu, ts. -H , etsii vain symbolisia linkkejä jatkaessaan komentoriviargumentteja. Liput mainitaan POSIX-standardissa etsi-komennon osalta. Peruslaajennus on lippu, eli -P , poistaaksesi seuraavan symbolilinkin käytöstä.
Ainakin polun on ennakoitava lauseke. Find-komento voi tulkita sisäisesti jokerimerkkejä, ja komentot on lainattava huolellisesti, jotta komentotulkin globbing voidaan hallita.
Lausekkeen komponentit erotetaan komentorivin argumentin rajalla, joka yleensä ilmaistaan välilyönninä komentotulkkisyntaksissa. Niitä tarkastellaan vasemmalta oikealle. Ne voivat sisältää loogisia komponentteja, kuten OR ja AND, sekä predikaatteja (toimintoja ja suodattimia). GNU find sisältää useita muita ominaisuuksia, joita POSIX ei maininnut.
Seuraavia symboleja käytetään määrittämään hakemisto:
(.) : Nykyinen hakemiston nimi
(/) : juurihakemistolle
Etsi-komennon lyhyt historia
Find-komento esiintyi versiossa 5 Unix osana Ohjelmoijan työpöytä projekti ja sen määritteli Dick Haight cpion kanssa, jotka on kehitetty käytettäviksi yhdessä.
Alun perin find-komennon GNU-toteutuksen määritti Eric Decker . Myöhemmin sen kehitti David MacKenzie, Tim Wood , ja Jay Plett . Myös hakukomento on siirretty IBM i -käyttöjärjestelmään.
scanner.next java
Predikaatit
Laajalti käytettyjä esimerkkejä ovat:
Etsi oletusarvot -printin toteuttamiselle, jos ehdot ovat tosi, jos lauseke ei käytä mitään seuraavista: -ok, -exec, -print tai -print0.
Operaattorit
Operaattorit parantavat hakukomentolausekkeita. Ne on mainittu laskevassa tärkeysjärjestyksessä:
- expr1 expr2 (tai expr1 -a expr2 : AND. expr2 ei arvioida, jos lause1 on epätosi.
- Laus1 -o Laus2 : TAI. Laus2:ta ei arvioida, jos lause1 on tosi.
Esimerkkejä etsintäkomennosta
Katsotaanpa seuraavia esimerkkejä find-komennosta:
alennuskuva
- Etsi tiedostoja nimen mukaan
- Etsi tiedostoja tyypin mukaan
- Etsi uudempia tiedostoja
- Etsi ja poista tiedosto
- Etsi hakemisto
- Etsi tiedostoja muokkausajan mukaan
- Etsi tiedostoja luvalla
- Etsi ja korvaa tiedostoja
- Etsi tekstiä useista tiedostoista
Etsi tiedostoja nimen mukaan
Voimme etsiä kaikista tiedostoista, jotka päättyvät .txt-tunnisteella. Voit tehdä tämän suorittamalla alla olevan komennon:
find . -name '*.txt'
Yllä oleva komento luettelee kaikki nykyisen työhakemiston tekstitiedostot. Harkitse alla olevaa tulosta:
Yllä olevasta lähdöstä kaikki tiedostot, joilla on .txt-tunniste, luetellaan Find-komennolla.
Tiedostojen etsiminen tyypin mukaan
'-type'-parametria käytetään määrittämään tiedostotyyppi.
Jotkut tiedostotyypeistä ovat seuraavat:
- f: tavallinen tiedosto
- d: hakemisto
- l: symboliset linkit
- c: merkkilaitteet
- b: Estä laitteet
Harkitse alla olevaa komentoa:
find . -type d -name '*.bak'
Yllä oleva komento luettelee kaikki hakemistot, joiden tunniste on '.bak'. Harkitse alla olevaa tulosta:
Yllä olevasta lähdöstä komento 'find . -type d -nimi '*.bak' näyttää kaikki hakemistot, jotka päättyvät '.bak'.
Etsi uudempia tiedostoja
Parametri '-uudempi' auttaa etsimään tiedostoja, jotka ovat uudempia kuin mainittu tiedosto. Harkitse alla olevaa komentoa:
find . -newer msg.txt
Yllä oleva komento näyttää kaikki tiedostot, jotka ovat uudempia kuin 'msg.txt' nykyisestä työhakemistosta. Harkitse alla olevaa tulosta:
Yllä olevasta lähdöstä kaikki näytettävät tiedostot ovat uudempia kuin msg.txt-tiedosto.
Etsi ja poista tiedosto
'-delete' -vaihtoehtoa käytetään tietyn tiedoston poistamiseen. Meidän on oltava erittäin varovaisia käyttäessämme tätä komentoa, koska kumoamisvaihtoehtoa ei ole, jos se suoritetaan kerran. Harkitse alla olevaa komentoa:
find . -name Demo.txt -delete
Yllä oleva komento poistaa tiedoston 'Demo.txt' nykyisestä työhakemistosta. Harkitse alla olevaa tulosta:
lajittelutaulukko javassa
Etsi hakemisto
'type -d' -vaihtoehtoa käytetään hakemiston etsimiseen. Harkitse alla olevaa komentoa:
find . type -depth -name Newdirectory
Yllä oleva komento löytää 'New Directory' -sijainnin. Harkitse alla olevaa tulosta:
Etsi tiedostoja muokkausajan mukaan
'-mtime'-vaihtoehtoa, jota seuraa päivien lukumäärä, käytetään tiedostojen etsimiseen muokkaamalla. Päivien lukumäärä voi olla positiivinen tai negatiivinen. Negatiivista arvoa käytetään vähemmän kuin -1:tä käytetään viimeisenä päivänä, ja vastaavasti +1 etsii tiedoston yli yhden päivän ajalta. Harkitse alla olevaa komentoa:
find ./Newdirectory -mtime -1
Yllä oleva komento löytää tiedostot, joita on muokattu viimeisen päivän aikana. Harkitse alla olevaa tulosta:
Etsi tiedostoja luvalla
'-perm'-vaihtoehtoa käytetään tiedostojen etsimiseen luvan perusteella. Suorita hakukomento '-perm'-optiolla ja välitä vaadittu arvo. Harkitse alla olevaa komentoa:
find ./ -perm 777
Yllä oleva komento luettelee määritetyn hakemiston tiedostot, jotka kaikki voivat lukea, kirjoittaa ja suorittaa.
Etsi ja korvaa tiedostoja
Tiedostojen etsimiseksi ja korvaamiseksi meidän on yhdistettävä find-komento sed-komentoon. Jos haluat käsitellä tiedostoja, käytä '-exec'-vaihtoehtoa find-komennon kanssa. Harkitse alla olevaa komentoa:
find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ;
edellä olevasta komennosta määritetty esiintymä korvataan. Harkitse alla olevaa tulosta:
Etsi tekstiä useista tiedostoista
Voimme tehdä toisen yhdistelmän find-komennosta grep-komennon kanssa löytääksemme tekstin eri tiedostoista. Harkitse alla olevaa komentoa:
find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ;
Yllä oleva komento löytää tekstin 'demo' sisältävät rivit kaikista hakemiston 'Newdirectory' tekstitiedostoista. Harkitse alla olevaa tulosta:
Yllä olevasta lähdöstä voimme nähdä rivit, joissa teksti 'demo' on näytetty.
Hae jokaisesta hakemistosta
$ find / -name file1 -type f -print
Yllä oleva komento etsii kaikki hakemistot tavalliselle tiedostolle, jonka otsikko on tiedosto1, ja tulostaa sen näytölle. Yleensä ei ole hyvä idea etsiä tiedostoja tällä tavalla. Se voi viedä hyvän ajan. Joten on parasta mainita hakemisto. Muutamat käyttöjärjestelmät voivat liittää tiedostojärjestelmiä (dynaamisia), jotka eivät ole edullisia find-komennolle. Monimutkaisemmat tiedostonimet, jotka sisältävät kuoren ainutlaatuisia merkkejä, voidaan joutua sulkemaan lainausmerkeissä.