FIND(1)

NIMI
find - tiedostojen haku hakemistohierarkiasta

YLEISKATSAUS
find [polku...] [lauseke]

KUVAUS
Tämä käsikirjan sivu dokumentoi find -ohjelman GNU-version. find etsii kuhunkin annettuun tiedostonimeen liittyvän hakemistopuun laskemalla annetun lausekkeen arvon vasemmalta oikealle noudattaen laskentajärjestyssääntöjä (katso luku OPERAATTORIT), kunnes lopputulos on tiedossa (vasemman puolen and operaatioiden tulos on epätosi ja or operaatioiden tosi), jolloin find siirtyy seuraavaan tiedostonimeen.

Ensimmäinen argumentti, joka alkaa `-', `(', `)', `,', tai `!' oletetaan lausekkeen alkukohdaksi; kaikki argumentit ennen sitä ovat hakupolkuja, ja kaikki argumentit sen jälkeen ovat lausekkeen jatkoa. Ellei polkuja ole annettu, käytetään nykyistä hakemistoa. Jos mitään lauseketta ei ole annettu, käytetään lauseketta `-print'.

find -ohjelman suoritus loppuu tilailmoitukseen 0, jos kaikki tiedostot on käsitelty onnistuneesti, ja tilailmoitukseen suurempi kuin 0, jos esiintyy virheitä.

LAUSEKKEET

Lauseke koostuu optioista (jotka vaikuttavat kokonaisoperaatioon eivätkä tietyn tiedoston käsittelyyn, ja palauttavat aina arvon tosi), testeistä (jotka palauttavat arvon tosi tai epätosi), ja toiminnoista (joilla on sivuvaikutuksia ja jotka palauttavat arvon tosi tai epätosi). Näitä kaikkia erottavat toisistaan operaattorit. -and on oletusarvo, jos operaattori puuttuu. Jos lauseke ei sisällä muita toimintoja kuin -prune, käytetään toimintoa -print kaikille tiedostoille, joilla lauseke saa arvon tosi.

  OPTIOT

Kaikki optiot palauttavat aina arvon tosi. Ne vaikuttavat aina, eivät pelkästään silloin kun niiden paikka lausekkeessa saavutetaan. Siksi ne on paras selvyyden vuoksi sijoittaa lausekkeen alkuun.

-daystart
    Mittaa aikoja (for -amin, -atime, -cmin, -ctime, -mmin, and -mtime) tämän vuorokauden alusta eikä ajankohdasta 24 tuntia sitten.

-depth
    Prosessoi kunkin hakemiston sisällön ennen hakemistoa itseään.

-follow
    Takaisinviittaus symbolisiin linkkeihin. Olettaa option -noleaf.

-help, --help
    Tulostaa find -ohjelman komentorivin käyttöohjeen ja poistuu ohjelmasta.

-maxdepth levels
    Laskeututaan enintään levels (ei-negatiivinen kokonaisluku) hakemistotasoa komentoriviargumenttien alapuolelle.`-maxdepth 0' tarkoittaa, että testejä ja toimintoja voidaan soveltaa vain komentoriviargumentteihin.

-mindepth levels
    Ei sovelleta testejä tai toimintoja tasoilla, jotka ovat vähemmän kuin levels (ei-negatiivinen kokonaisluku). `-mindepth 1' tarkoittaa sitä, että käsitellään kaikki tiedostot lukuunottamatta komentoriviargumentteja.

-mount
    Ei laskeuduta muiden tiedostojärjestelmien hakemistoihin. Option -xdev vaihtoehtoinen nimi, yhteensopivuuden takia eräiden muiden find -versioiden kanssa.

-noleaf
    Ei oleteta, että hakemistoissa on 2 alihakemistoa vähemmän kuin niiden kovien linkkien lukumäärä. Tämä optio tarvitaan kun haku kohdistuu tiedostojärjestelmistä, jotka eivät noudata Unixin hakemisto-linkki- konventiota, esim CD-ROM tai MS-DOS tiedostojärjestelmät tai AFS tietovälineasemat. Jokaisella normaalin Unix-tiedostojärjestelmän hakemistolla on ainakin 2 kovaa linkkiä: sen nimi ja sen `.'-linkki. Lisäksi se alihakemistoilla (jos niitä on) on jokaisella `..'-linkki ko. hakemistoon. Kun find tutkii hakemistoa, ja havaitsee alihakemistojen lukumäärän olevan 2 pienempi kuin hakemiston linkkien lukumäärä, se tietää että loput linkeistä hakemistossa eivät ole hakemistoja (hakemistopuun `lehti'-tiedostoja). Jos vain tiedostojen nimet (eikä niiden tilatietoja) tarvitsee tutkia, tämä merkitsee huomattavaa hakunopeuden lisäystä.

-version, --version
    Näytä find version numero ja poistu ohjelmasta.

-xdev
    Ei laskeuduta muiden tiedostojärjestelmien hakemistoihin.

  TESTIT

Numeeriset argumentit voidaan määritellä seuraavasti:

+n  arvolle suurempi kuin n,

-n  arvolle pienempi kuin n,

n   arvolle yhtä kuin n.

-amin n
    Tiedostoa luettiin viimeksi n minuuttia sitten.

-anewer file
    Tiedostoa luettiin viimeksi myöhemmin kuin file muutettiin. -anewer ottaa huomioon option -follow vain jos -follow on ennen testiä -anewer komentorivillä.

-atime n
    Tiedostoa luettiin viimeksi n*24 tuntia sitten.

-cmin n
    Tiedoston tilaa muutettiin viimeksi n minuuttia sitten.

-cnewer file
    Tiedoston tilaa muutettiin viimeksi myöhemmin kuin file muutettiin. -cnewer ottaa huomioon option -follow vain jos -follow on ennen testiä -cnewer komentorivillä.

-ctime n
    Tiedoston tilaa muutettiin viimeksi n*24 tuntia sitten.

-empty
    Tiedosto on tyhjä ja joko tavallinen tiedosto tai hakemisto.

-false
    Aina epätosi.

-fstype type
    Tiedosto on tyypin type tiedostojärjestelmässä. Kelvolliset tiedstojärjestelmätyypit vaihtelevat eri Unix-versioissa. Voit käyttää optiota -printf %F-direktiivin kanssa nähdäksesi tietojärjestelmiesi tyypit.

-gid n
    Tiedoston numeerinen ryhmätunnus on n.

-group gname
    Tiedosto kuuluu ryhmään gname (numeerinen ryhmätunnus on sallittu).

-ilname pattern
    Kuten -lname, mutta vertailu ei erota isoja ja pieniä kirjaimia.

-iname pattern
    Kuten -name, mutta vertailu ei erota isoja ja pieniä kirjaimia. Esimerkiksi mallit `fo*' ja `F??' vastaavat tiedostonimiä `Foo', `FOO', `foo', `fOo', jne.

-inum n
    Tiedostolla on inode luku n.

-ipath pattern
    Kuten -path, mutta vertailu ei erota isoja ja pieniä kirjaimia.

-iregex pattern
    Kuten -regex, mutta vertailu ei erota isoja ja pieniä kirjaimia.

-links n
    Tiedostolla on n linkkiä.

-lname pattern
    Tiedosto on symbolinen linkki jonka sisältö vastaa komentotulkin mallia (shell pattern)pattern. Metamerkit (metacharacters) eivät käsittele merkkejä `/' or `.' erityisellä tavalla.

-mmin n
    Tiedoston tietosisältöä muutettiin viimeksi n minuuttia sitten.

-mtime n
    Tiedoston tietosisältöä muutettiin viimeksi n*24 tuntia sitten.

-name pattern
    Tiedostonimen perusosa (polku, josta nimen alun hakemistot on poistettu) vastaa komentotulkin mallia pattern. The metamerkit (`*', `?', ja `[]') eivät vastaa merkkiä `.' nimen perusosan alussa. Käytä optiota -prune hakemiston ja sen alaisten tiedostojen ohitukseen; katso esimerkkiä option -path kuvauksessa.

-newer file
    Tiedostoa muutettiin myöhemmin kuin file muutettiin. -newer ottaa huomioon option -follow vain jos -follow on ennen testiä -newer komentorivillä.

-nouser
    Mikään käyttäjä ei vastaa tiedoston numeerista käyttäjätunnusta.

-nogroup
    Mikään ryhmä ei vastaa tiedoston numeerista ryhmätunnusta.

-path pattern
    Tiedostonimi vastaa komentotulkin mallia pattern. Metamerkit eivät käsittele merkkejä `/' tai `.' erityisellä tavalla; siten esimerkiksi
    find . -path './sr*sc'
    tulostaa merkinnän hakemistosta './src/misc' (jos se on olemassa). Jos haluat ohittaa kokonaisen hakemistopuun, käytä optiota -prune, jolloin ei tarvitse tarkistaa puun jokaista tiedostoa. Esimerkiksi hakemiston `src/emacs' ja kaikkien sen alaisten tiedostojen ja hakemistojen ohittamiseksi ja muiden löytyneiden tiedostojen ja hakemistojen nimien tulostamiseksi menettele seuraavasti:
    find . -path './src/emacs' -prune -o -print

-perm mode
    Tiedoston käyttöoikeusbitit ovat täsmälleen mode (oktaali tai symbolinen). Symboliset moodit käyttävät moodia 0 lähtökohtana.

-perm -mode
    Kaikki käyttöoikeusbitit mode asetetaan tiedostolle.

-perm +mode
    Mitkä tahansa käyttöoikeusbitit mode asetetaan tiedostolle.

-regex pattern
    Tiedostonimi vastaa säännöllistä lauseketta pattern. Kyseessä on koko polun vastaavuus, ei haku. Esimerkiksi tiedoston `./fubar3' vastineen löytämiseksi voit käyttää säännöllistä lauseketta `.*bar.' tai `.*b.*3', mutta et lauseketta `b.*r3'.

-size n[bckw]
    Tiedosto käyttää n yksikköä tilaa. Yksiköt ovat 512-tavuisia lohkoja joko oletusarvoisesti tai jos `b' seuraa arvoa n, tavuja jos `c' seuraa arvoa n, kilotavuja jos `k' seuraa arvoa n, tai 2-tavuisia sanoja, jos `w' seuraa arvoa n. Koko ei ota huomioon epäsuoria lohkoja, mutta ottaa huomioon harvat tiedostot, joita ei tosiasiassa ole varattu.

-true
    Aina tosi.

-type c
    Tiedosto on tyyppiä c:

    b   erityislohkotiedosto (puskuroitu)

    c   erityismerkkitiedosto (puskuroimaton)

    d   hakemisto

    p   nimetty putki (FIFO)

    f   tavallinen tiedosto

    l   symbolinen linkki

    s   socket

-uid n
    Tiedoston numeerinen käyttäjätunnus on n.

-used n
    Tiedostoa luettiin viimeksi n päivää sen jälkeen kun sen tila muuttui.

-user uname
    Tiedoston omistaa uname (numeerinen käyttäjätunnus sallittu).

-xtype c
    Sama kuin -type ellei tiedosto ole symbolinen linkki. Symbolisen linkin tapauksessa: tosi, jos -follow ei ole annettu ja tiedosto on linkki tyypin c tiedostoon; tosi, jos -follow on annettu ja c `l'. Toisin sanoen, symbolisten linkkien tapauksessa -xtype tarkistaa tiedostotyypin, jota -type ei tarkista.

  TOIMINNOT

-exec command ;
    Suorita komento command; tosi jos palauttaa tilakoodin 0. Kaikki find :ia seuraavat argumentit ovat komennon argumentteja kunnes kohdataan argumentti `;'. Merkkijono `{}' korvataan nykyisellä tiedostonimellä, joka prosessoidaan kaikkialla, missä se esiintyy komennon argumenteissa, eikä pelkästään yksin esiintyesään, kuten on asianlaita eräissä muissa find :n versioissa. Molemmat näistä rakenteista saattavat tarvita suojausta (`\') tai lainausmerkkejä komentotulkin tekemän laajennuksen estämiseksi. Komento suoritetaan alkuhakemistossa.

-fls file
    Tosi; kuten -ls mutta kirjoittaa tiedostoon file kuten -fprint.

-fprint file
    Tosi; tulosta täydellinen tiedostonimi tiedostoon file. Jos tiedostoa file ei ole, kun find toteutetaan, se luodaan; jos se on olemassa, se typistetään. Tiedostonimet ``/dev/stdout'' ja ``/dev/stderr'' saavat erityiskäsittelyn; ne viittaavat vastaavasti vakiotulostimeen ja vakiovirhetulostimeen.

-fprint0 file
    Tosi; kuten -print0 mutta kirjoittaa tiedostoon file kuten -fprint.

-fprintf file format
    Tosi; kuten -print0 mutta kirjoittaa tiedostoon file kuten -fprint.

-ok command ;
    Kuten -exec mutta kysyy ennen suoritusta käyttäjältä lupaa (vakiosyöttölaitteella); jos vastaus ei ala merkillä `y' tai `Y', älä toteuta komentoa ja palauta epätosi.

-print
    Tosi; tulosta täydellinen tiedostonimi ja rivinvaihtomerkki vakiotulostimelle.

-print0
    Tosi; tulosta täydellinen tiedostonimi ja nollamerkki (null) vakiotulostimelle. Tämä sallii komennon find tulostusta käsittelevien ohjelmien tulkita oikein tiedostonimet, joihin sisältyy rivinvaihtoja.

-printf format
    Tosi; tulostaa format vakiotulostimelle ja tulkitsee `\' merkit (escapes) ja `%'-ohjeet (directives). Kentänleveydet ja tarkkuudet määritellään kuten C-funktiossa `printf`. Toisin kuin -print, -printf ei lisää rivinvaihtoa merkkijonon loppuun. `\' merkit ( escapes) ja direktiivit ovat:

    \a  Äänimerkki.

    \b  Askel taakse.

    \c  Lopeta heti tämän muotoilun tulostus ja näytä se tulostimella.

    \f  Sivun vaihto.

    \n  Rivin vaihto.

    \r  Siirry rivin alkuun.

    \t  Vaakatabulointi.

    \v  Pystytabulointi.

    \\  Kenoviiva (`\').

    Kenoviiva `\' jota seuraa jokin muu merkki käsitellään tavallisena merkkinä; molemmat tulostetaan.

    %%  Tulostettava prosenttimerkki.

    %a  Tiedoston viimeisin lukuajankohta muotoiltuna kuten C-kielen `ctime'- funktio.

    %Ak Tiedoston viimeisin lukuajankohta muotoiltuna k mukaisesti, mikä on joko `@' tai C-kielen `strftime' funktion ohjausarvo. k :n mahdolliset arvot on lueteltu alla; jotkut niistä eivät ole käytettävissä kaikissa järjestelmissä funktion `strftime' eroista johtuen.

        @   sekuntia tammikuun 1 päivästä 1970, 00:00 GMT lukien.

        Kellonaikakentät:

        H   tunti (00..23)

        I   tunti (01..12)

        k   tunti ( 0..23)

        l   tunti ( 1..12)

        M   minuutti (00..59)

        p   locale:n aamupäivä (AM) tai iltapäivä (PM)

        r   kellonaika, 12-tuntinen (hh:mm:ss [AP]M)

        S   sekunti (00..61)

        T   kellonaika, 24-tuntinen (hh:mm:ss)

        X   locale:n kellonaikaesitystapa (H:M:S)

        Z   aikavyöhyke (e.g., EDT), tai tyhjä, jos ei määritelty

        Päivämääräkentät:

        a   locale:n lyhennetty viikonpäivätunnus (Sun..Sat)

        A   locale:n vaihtelevanpituinen täydellinen viikonpäivän nimi (Sunday..Saturday)

        b   locale:n lyhennetty kuukauden nimi (Jan..Dec)

        B   locale:n vaihtelevanpituinen täydellinen kuukauden nimi (January..December)

        c   locale:n päivämäärä ja kellonaika (Sat Nov 04 12:02:33 EST 1989)

        d   kuukauden päivä (01..31)

        D   päivämäärä (mm/dd/yy)

        h   sama kuin b

        j   vuoden päivä (001..366)

        m   kuukausi (01..12)

        U   vuoden viikon numero; sunnuntai viikon ensimmäinen päivä (00..53)

        w   viikon päivä (0..6)

        W   vuoden viikon numero; maanantai viikon ensimmäinen päivä (00..53)

        x   locale:n päivämäärän esitysmuoto (mm/dd/yy)

        y   vuosiluvun kaksi viimeistä numeroa (00..99)

        Y   vuosi (1970...)

    %b  Tiedoston koko 512 tavun lohkoina (ylöspäin pyöristettynä).

    %c  Tiedoston viimeisin tilanmuutosajankohta C-kielen funktion `ctime' palauttamassa muodossa.

    %Ck Tiedoston viimeisin tilanmuutosajankohta k:n (sama kuin %A) palauttamassa muodossa.

    %d  Tiedoston syvyys hakemistopuussa; 0 tarkoittaa, että tiedosto on komentorivin argumentti.

    %f  Tiedostonimi, josta nimen alun hakemistot on poistettu (vain nimen viimeinen osa).

    %F  Tiedostojärjestelmän tyyppi, jossa tiedosto on; tätä arvoa voi käyttää -fstype.

    %g  Tiedoston ryhmänimi tai ryhmätunnus, jos nimeä ei ole.

    %G  Tiedoston numeerinen ryhmätunnus.

    %h  Tiedostonimen alkuun kuuluvat hakemistot (muut paitsi nimen viimeinen osa).

    %H  Komentoriviargumentti, jossa tiedosto on.

    %i  Tiedoston inode luku (desimaalinen).

    %k  Tiedoston koko 1K lohkoina (ylöspäin pyöristettynä).

    %l  Symbolisen linkin kohde(tyhjä merkkijono, jos tiedosto ei ole symbolinen linkki).

    %m  Tiedoston käyttöoikeusbitit (in oktaalilukuna).

    %n  Tiedostoon viittaavien kovien linkkien lukumäärä.

    %p  Tiedoston nimi.

    %P  Tiedoston nimi, josta on poistettu se komentoriviargumentin nimi, jonka alaisena se oli.

    %s  Tiedoston koko tavuina.

    %t  Tiedoston viimeisin sisällönmuutosajankohta C-kielen funktion `ctime' palauttamassa muodossa.

    %Tk Tiedoston viimeisin sisällönmuutosajankohta k:n (sama kuin %A) palauttamassa muodossa.

    %u  Tiedoston käyttäjänimi, tai numeerinen käyttäjätunnus, jos nimeä ei ole.

    %U  Tiedoston numeerinen käyttäjätunnus.

    Merkki `%' minkä tahansa muun merkin seuraamana hylätään (tämä muu merkki tulostetaan).

-prune
    Jos -depth ei ole käytössä, tosi; älä laskeudu käytössä olevaan hakemistoon.
    Jos -depth on käytössä, epätosi; ei vaikutusta.

-ls Tosi; listaa tiedosto muodossa `ls -dils' vakiotulostimelle. Lohkolaskelmat ovat 1K lohkoina, ellei ympäristömuuttuja POSIXLY_CORRECT ole asetettu, missä tapauksessa käytetään 512 tavun lohkoja.

  OPERAATTORIT

Lueteltuna alenevan suoritusjärjestyksen mukaan:

( expr )
    Pakollinen suoritusjärjestys.

! expr
    Tosi jos expr on epätosi.

-not expr
    Sama kuin ! expr.

expr1 expr2
    Ja (oletus); Arvoa expr2 ei lasketa jos expr1 on epätosi.

expr1 -a expr2
    Sama kuin expr1 expr2.

expr1 -and expr2
    Sama kuin expr1 expr2.

expr1 -o expr2
    Tai; Arvoa expr2 ei lasketa jos expr1 on tosi..

expr1 -or expr2
    Sama kuin expr1 -o expr2.

expr1 , expr2
    Lista; molemmat arvot expr1 ja expr2 lasketaan aina. Arvo expr1 hylätään; listan arvo on lausekkeen expr2 arvo.

ESIMERKKEJÄ

find $HOME -print
    Listaa kaikki kotihakemistosi tiedostot ja alihakemistot.

find $HOME -name '*.txt' -print
    Hae kaikki kotihakemistosi .txt-loppuiset tiedostot.

find $HOME \! -name '[A-Z]*' -print
    Hae ne kotihakemistosi tiedostot, joiden nimi ei ala isolla kirjaimella.

find / -type d -name 'man*' -print
    Etsi järjestelmän käsikirjahakemistot.

gzip `find \! -name '*.gz' -print`
    Etsi ja tiivistä ne aktiivisen hakemiston tiedostot, jotka eivät pääty .gz

find . -size 0 -ok rm {} \;
    Poista aktiivisen hakemiston tyhjät tiedostot (kysellen).

find . -mtime -14 -type f -print
    Etsi kahden viime viikon aikana muutetut tavalliset tiedostot.

find / -user matti -print
    Etsi käyttäjän matti kaikki tiedostot.

KATSO MYÖS
locate(1L) locatedb(5L) updatedb(1L) xargs(1L) Finding Files (on-line järjestelmässä Info tai tulosteena).