Manpages

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 suorituksen jälkeen paluuarvo on 0, jos kaikki tiedostot on käsitelty onnistuneesti ja 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 (−amin, −atime, −cmin, −ctime, −mmin ja −mtime) tämän vuorokauden alusta eikä ajankohdasta 24 tuntia sitten.

−depth

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

−follow

Seuraa symbolisia linkkejä. Olettaa option −noleaf.

−help, −−help

Tulostaa find −ohjelman komentorivin käyttöohjeen ja poistuu ohjelmasta.

−maxdepth tasot

Laskeudutaan enintään tasot (ei-negatiivinen kokonaisluku) hakemistotasoa komentoriviargumenttien alapuolelle.’−maxdepth 0’ tarkoittaa, että testejä ja toimintoja voidaan soveltaa vain komentoriviargumentteihin.

−mindepth tasot

Ei sovelleta testejä tai toimintoja tasoilla, jotka ovat vähemmän kuin tasot (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ärjestelmiin, 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 sen 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:n 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 tiedosto

Tiedostoa luettiin viimeksi myöhemmin kuin tiedostoa 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 tiedosto

Tiedoston tilaa muutettiin viimeksi myöhemmin kuin tiedosto 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 tyyppi

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

−gid n

Tiedoston numeerinen ryhmätunnus on n.

−group ryhmätunnus

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

−ilname kuvio

Kuten −lname, mutta vertailu ei erota isoja ja pieniä kirjaimia.

−iname kuvio

Kuten −name, mutta vertailu ei erota isoja ja pieniä kirjaimia. Esimerkiksi kuviot ’fo*’ ja ’F??’ vastaavat tiedostonimiä ’Foo’, ’FOO’, ’foo’, ’fOo’ jne.

−inum n

Tiedostolla on inode luku n.

−ipath kuvio

Kuten −path, mutta vertailu ei erota isoja ja pieniä kirjaimia.

−iregex kuvio

Kuten −regex, mutta vertailu ei erota isoja ja pieniä kirjaimia.

−links n

Tiedostolla on n linkkiä.

−lname kuvio

Tiedosto on symbolinen linkki, jonka sisältö vastaa komentotulkin kuviota (shell pattern) kuvio. Metamerkit (metacharacters) eivät käsittele merkkejä ’/’ tai ’.’ erityisellä tavalla.

−mmin n

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

−mtime n

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

−name kuvio

Tiedostonimen perusosa (polku, josta nimen alun hakemistot on poistettu) vastaa komentotulkin kuviota kuvio. 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 tiedosto

Tiedostoa muutettiin myöhemmin kuin tiedosto 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 kuvio

Tiedostonimi vastaa komentotulkin kuviota kuvio. 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 moodi

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

−perm −moodi

Kaikki käyttöoikeusbitit moodi asetetaan tiedostolle.

−perm +moodi

Mitkä tahansa käyttöoikeusbitit moodi asetetaan tiedostolle.

−regex kuvio

Tiedostonimi vastaa säännöllistä lauseketta kuvio. 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

lohkolaitetiedosto (puskuroitu)

c

merkkilaitetiedosto (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 käyttäjätunnus (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 komento ;

Suorita komento komento; tosi jos paluuarvo on 0. Kaikki find:a 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 tiedosto

Tosi; kuten −ls, mutta kirjoittaa tiedostoon tiedosto kuten −fprint.

−fprint tiedosto

Tosi; tulosta täydellinen tiedostonimi tiedostoon tiedosto. Jos tiedostoa tiedosto 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 vakiotulosteeseen ja vakiovirheeseen.

−fprint0 tiedosto

Tosi; kuten −print0, mutta kirjoittaa tiedostoon tiedosto, kuten −fprint.

−fprintf tiedosto mallinne

Tosi; kuten −print0, mutta kirjoittaa tiedostoon tiedosto, kuten −fprint.

−ok komento ;

Kuten −exec, mutta kysyy ennen suoritusta käyttäjältä lupaa (vakiosyötteestä); jos vastaus ei ala merkillä ’y’ tai ’Y’, älä toteuta komentoa ja palauta epätosi.

−print

Tosi; tulosta täydellinen tiedostonimi ja rivinvaihtomerkki vakiotulosteeseen.

−print0

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

−printf mallinne

Tosi; tulostaa mallinne vakiotulosteeseen 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 mallinteen käsittely ja tulosta käsitellyt.

\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’- funktiossa.

%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 on viikon ensimmäinen päivä (00..53)

w

viikon päivä (0..6)

W

vuoden viikon numero; maanantai on 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 (desimaalina).

%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 (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’ vakiotulosteeseen. 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).