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.
|
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).