Ero sivun ”Locate” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
p (uuteen hienoon luokkaan)
(laajennos/rewrite)
Rivi 1: Rivi 1:
Locate on komentoriviohjelma, jolla saat selville tiedoston tai [[Hakemisto|hakemiston]] sijainnin antamalla sille nimen osan. Locate on nopea, sillä se käyttää updatedb-ohjelman luomaa tietokantaa.
Locate on [[komentorivi]]ohjelma, jolla saa selville tiedoston tai [[Hakemisto|hakemiston]] sijainnin antamalla sille sen nimen osan. Locaten käyttö pohjautuu ennakolta luotuun tietokantaan, joten se toimii huomattavasti [[find]]-ohjelmaa nopeammin.  


Esimerkiksi:
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).
locate tetris


palauttaa löytämänsä tiedostot ja hakemistot:
Yleisimmät locate-toteutukset ovat nimeltään slocate ja mlocate. Mlocate on [[Red Hat]]in 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/[[Bsdgames|tetris-bsd]]
  /usr/games/[[Bsdgames|tetris-bsd]]
  /usr/share/doc/screen/terminfo/tetris.c
  /usr/share/doc/screen/terminfo/tetris.c
  /usr/share/man/man6/tetris-bsd.6.gz
  /usr/share/man/man6/tetris-bsd.6.gz
  /var/games/bsdgames/tetris-bsd.scores
  /var/games/bsdgames/tetris-bsd.scores
Jos halutaan kohdistaa haku vain varsinaisiin tiedostonnimiin, voidaan käyttää valitsinta <tt>-b</tt>:
locate -b game
Valitsimella <tt>-r</tt> voidaan käyttää hyödyksi [[säännöllinen lauseke|säännöllisiä lausekkeita]]. Seuraava etsisi kaikki tiedostot, joiden varsinainen tiedostonnimi alkaa kirjaimella <tt>p</tt> ja päättyy merkkeihin <tt>eters</tt>. Huomaa lainausmerkit, jotka estävät [[komentotulkki]]a tulkitsemasta väärin komennon erikoismerkkejä.
locate -br '^p.*eters$'
Valitsimella <tt>-e</tt> 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 [[jakelu]]issa se on määritelty [[cron]]in avulla suoritettavaksi kerran vuorokaudessa.
==Katso myös==
*[[Find]]
*[[Xargs]]
*[[Basename]]
*[[Dirname]]


[[Luokka:Komentorivin perustyökalut]]
[[Luokka:Komentorivin perustyökalut]]

Versio 20. marraskuuta 2007 kello 03.36

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