Locate

Linux.fista
Versio hetkellä 11. syyskuuta 2015 kello 18.39 – tehnyt Oselotti (keskustelu | muokkaukset)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun

Locate on komentoriviohjelma, jolla saa selville tiedoston tai hakemiston sijainnin antamalla sille sen nimen osan. Locaten käyttö pohjautuu ennakolta luotuun tietokantaan, joten se toimii huomattavasti find-ohjelmaa nopeammin.

Puutteena suhteessa findiin on tietokannan luonnin jälkeen tapahtuneiden muutosten puuttuminen hakutuloksesta sekä edistyneempien toimintojen käyttö, kuten mahdollisuus tehdä hakuja muunkin kuin tiedostonnimen perusteella. Locaten haut kohdistuvat myös aina koko järjestelmään (rajoittuen toki niihin hakemistoihin, joihin käyttäjällä on lukuoikeus).

Yleisimmät locate-toteutukset ovat nimeltään slocate ja mlocate. Mlocate on Red Hatin kehittämä korvaava toteutus slocatelle. Mlocate poikkeaa slocatesta siinä, että se ei tietokannan päivityksen yhteydessä luo uudestaan koko tietokantaa, vaan päivittää vain muuttuneet tiedot. Tämä lyhentää tietokannan päivitysajan murto-osaan alkuperäisestä.

Käyttö

Etsitään kaikki tiedostot, joiden hakupolku (tiedostonnimi + hakemisto-osa) sisältää sanan tetris:

locate tetris

Tämä tulostaa esimerkiksi seuraavaa:

/usr/games/tetris-bsd
/usr/share/doc/screen/terminfo/tetris.c
/usr/share/man/man6/tetris-bsd.6.gz
/var/games/bsdgames/tetris-bsd.scores

Jos halutaan kohdistaa haku vain varsinaisiin tiedostonnimiin, voidaan käyttää valitsinta -b:

locate -b game

Valitsimella -r voidaan käyttää hyödyksi säännöllisiä lausekkeita. Seuraava etsisi kaikki tiedostot, joiden varsinainen tiedostonnimi alkaa kirjaimella p ja päättyy merkkeihin eters. Huomaa lainausmerkit, jotka estävät komentotulkkia tulkitsemasta väärin komennon erikoismerkkejä.

locate -br '^p.*eters$'

Valitsimella -e voidaan etsiä vain ne tiedostot, jotka yhä ovat olemassa. Koska locate tässä tapauksessa joutuu jokaisen tietokantaosuman kohdalla tarkistamaan tiedoston olemassaolon, on tämä hakutapa hieman tavallista hitaampi.

locate -e bsd

Tietokannan päivitys

Locaten tietokanta päivitetään komennolla

updatedb

Tämä edellyttää pääkäyttäjän oikeuksia ja kannattaa ainakin slocaten tapauksessa ajaa taustalla. Updatedb:iä ei kuitenkaan yleensä ole tarvetta suorittaa käsin, sillä useimmissa jakeluissa se on määritelty cronin avulla suoritettavaksi kerran vuorokaudessa.

Katso myös