find (Unix)

Wikipedia
Loikkaa: valikkoon, hakuun

Find on eräs Unixin komennoista, jolla voidaan etsiä halutunlaisia tiedostoja tiedostojärjestelmistä. Find toimii tiedostojärjestelmässä oletusarvoisesti rekursiivisesti toisin kuin esimerkiksi ls -komento.

Käyttö[muokkaa | muokkaa wikitekstiä]

Valitsimet[muokkaa | muokkaa wikitekstiä]

-print, tulostaa haetut tiedostot kokonaisten polkujen kera
-type, hakee halutun tyyppiset tiedostot:
f, tavallinen tiedosto
d, hakemisto
l, symbolinen linkki
p, nimetty putki
s, soketti
b, lohkomuotoinen laitetiedosto
c, merkkimuotoinen laitetiedosto
-perm, hakee halutunlaisilla oikeuksilla varustetut tiedostot, lisävalitsimilla oikeuksien edessä voidaan käyttää:
+, hakee kaikki tiedostot, joissa yksikin bitti on halutunlaisissa oikeuksissa asetettuna
-, hakee kaikki tiedostot, joissa on vähintään halutunlaiset oikeudet asetettuina

, jos etumerkkiä ei aseteta -perm hakee vain ne tiedostot, joissa on täsmälleen halutut oikeudet

-amin #nro, hakee tiedostot, joihin on kajottu #nro minuuttia sitten. Voidaan ilmoittaa myös etumerkin kanssa, 
jolloin haetaan myös uudemmat (-) tai vanhemmat (+) tiedostot
-anewer "tiedosto", hakee tiedostot, joihin on kajottu sen jälkeen kuin "tiedostoa" on muokattu
-atime #nro, hakee tiedostot, joihin on kajottu #nro päivää sitten. Voidaan myös ilmoittaa etumerkillisenä
-cmin #nro, hakee tiedostot, joita on muutettu #nro minuuttia sitten. Voidaan myös ilmoitta etumerkillisenä
-cnewer "tiedosto", hakee tiedostot, joita on muutettu sen jälkeen kuin "tiedostoa" on muokattu
-ctime #nro, hakee tiedostot, joita on muutettu #nro päivää sitten. Voidaan myös ilmoittaa etumerkillisenä
-fstype "tiedostojärjestelmätyyppi", hakee tiedostot, jotka ovat "tiedostojärjestelmätyyppisessä" tiedostojärjestelmässä
-gid #nro, hakee tiedostot, joiden numeerinen ryhmänumero on #nro
-group "ryhmänimi", hakee tiedostot jotka ovat "ryhmänimen" omistuksessa
-mmin #nro, hakee tiedostot, joita on muokattu #nro minuuttia sitten. Voidaan myös ilmoittaa etumerkillisenä
-mtime #nro, hakee tiedostot, joita on muokattu #nro päivää sitten. Voidaan myös ilmoittaa etumerkillisenä
-newer "tiedosto", hakee tiedostot, joita on muokattu "tiedoston" muokkaamisen jälkeen
-name "tiedosto", hakee tiedostot, jotka ovat annetun nimisiä. Haettavassa nimessä ei huomioida sen hakemistopolkua. 
 Haussa voidaan käyttää myös esimerkiksi erikoismerkkejä [], *, ?, jotka eivät tosin hae pisteellä 
 "." alkavia tiedostonimiä, vaikka lauseke sinänsä mätsäisi niitä.
-path "lauseke", toimii muuten samoin kuin -name mutta haussa huomioidaan sen hakemistopolku
-regex "säännöllinen lauseke", hakee tiedostot joiden nimi mätsää annetun "säännöllisen lausekkeen" kanssa
-size #nro[cwbk], hakee määritellyn kokoiset tiedostot. Voidaan ilmoittaa myös etumerkillisenä ja halutulla koon yksiköllä, 
 joka on oletusarvoisesti blokki (b).

Operaattorit[muokkaa | muokkaa wikitekstiä]

\( \), suluilla manipuloidaan arvojärjestystä
-a, looginen ja
-o, looginen tai
!, looginen ei

Esimerkkejä[muokkaa | muokkaa wikitekstiä]

Etsii kaikki järjestelmän tiedostot ja tulostaa niiden nimet kokonaisine polkuineen:

find / -print

Etsii kaikki työhakemistossa olevat alihakemistot muttei suorita hakuja rekursiivisesti niiden sisällä:

find . -type d ! -name \. -prune -print

Etsii kaikki työhakemiston tiedostot tai hakemistot, joissa on asetettuna ryhmälle tai muille käyttäjille kirjoitusoikeus:

find . -perm +0022 -print

Etsii ""-merkkien sisällä olevaa tekstiä tiedostojen sisältä:

find . -type f -exec grep -i "phrase to find" {} \; -print