Linux Locate parancs kezdőknek (8 példa)

Míg a find kétségkívül az egyik legnépszerűbb és leghatékonyabb parancssori segédprogram a fájlkereséshez Linuxban, nem elég gyors olyan helyzetekben, amikor azonnali eredményekre van szükséged. Ha parancssoron keresztül akarsz keresni egy fájlt a rendszereden, és a sebesség a legfontosabb, akkor van egy másik parancs, amit használhatsz: Locate.

Ebben a bemutatóban a locate parancsot fogjuk tárgyalni könnyen érthető példákon keresztül. Felhívjuk figyelmét, hogy az összes itt említett utasítást/példát Ubuntu 16.04 LTS rendszeren teszteltük, és az általunk használt locate verzió a 0.26.

Hogyan használjuk a locate parancsot Linuxban

A locate parancs nagyon könnyen használható. Mindössze annyit kell tennünk, hogy átadjuk neki a keresni kívánt fájlnevet.

locate 

Ha például az összes olyan fájlnevet meg akarom keresni, amelyben a ‘dir2’ karakterlánc szerepel, akkor ezt a locate segítségével a következőképpen tehetem meg:

Megjegyzés: A ‘locate dir2’ parancs (csillagok nélkül) is megteszi, mivel a locate implicit módon az átadott nevet (mondjuk NAME) *NAME*-vel helyettesíti.

Hogyan működik a locate parancs, avagy miért olyan gyors

A locate azért olyan gyors, mert a keresett fájl vagy könyvtár nevét nem olvassa be a fájlrendszerbe. Valójában egy (az updatedb parancs által előkészített) adatbázisra hivatkozik, hogy megtalálja, amit a felhasználó keres, és ennek a keresésnek az alapján állítja elő a kimenetét.

Míg ez egy jó megközelítés, megvannak a maga hátrányai is. A fő probléma az, hogy minden egyes új fájl vagy könyvtár létrehozása után a rendszerben frissíteni kell az eszköz adatbázisát, hogy az megfelelően működjön. Ellenkező esetben a parancs nem lesz képes megtalálni azokat a fájlokat/könyvtárakat, amelyek az utolsó adatbázis-frissítés után jöttek létre.

Ha például megpróbálom megtalálni a rendszerem ‘Letöltések’ könyvtárában a ‘tosearch’ karakterláncot tartalmazó nevű fájlokat, a find parancs egy eredményt ad a kimeneten:

De ha megpróbálom ugyanezt a keresést a locate paranccsal végrehajtani, akkor nem ad eredményt.

Ez azt jelenti, hogy az adatbázis, amelyben a locate keres, nem frissült a fájl létrehozása után a rendszerben. Frissítsük tehát az adatbázist, amit az updatedb paranccsal tehetünk meg. Így kell ezt megtenni:

sudo updatedb

És most, amikor újra lefuttatom ugyanazt a locate parancsot, a kimeneten fájlokat mutat:

Hasonlóan egy fájl vagy könyvtár eltávolítása után meg kell győződnünk arról, hogy a locate adatbázis frissítve lett, mert különben a parancs a keresés során továbbra is a fájlt fogja mutatni a kimeneten.

Hogyan lehet elérni, hogy a locate parancs a kimeneten kiírja az egyező bejegyzések számát vagy számát

Mint láttuk, a locate parancs a kimeneten kiadja az egyező fájlok nevét a teljes vagy abszolút elérési útvonallal együtt. De ha akarod, elérheted, hogy az eszköz elnyomja ezeket az információkat, és helyette csak a megfelelő bejegyzések számát vagy számát írja ki. Ezt a -c parancssori opcióval teheti meg.

Hogyan kényszerítheti a locate parancsot arra, hogy csak a meglévő fájloknak megfelelő bejegyzéseket írja ki

Mint azt már korábban tárgyaltuk ebben a cikkben, ha egy fájlt eltávolít a rendszerből, akkor amíg nem frissíti újra a locate adatbázisát, a parancs továbbra is ezt a fájlnevet fogja megjeleníteni a kimeneten. Ebben a konkrét esetben azonban kihagyhatja az adatbázis frissítését, és a -e parancssori opció használatával továbbra is helyes eredményeket kaphat a kimeneten.

Eltávolítottam például a ‘filetosearch.txt’ fájlt a rendszeremből. Ezt megerősítette a find parancs, amely már nem tudott keresni a fájlban:

De amikor ugyanezt a műveletet a locate paranccsal hajtottam végre, a kimeneten még mindig megjelenítette a fájlt:

És tudjuk, miért – mert a locate adatbázisát nem frissítette a fájl törlése után. A -e opció használata azonban megtette a hatását:

Itt van, amit a locate man page ír erről az opcióról: “Csak olyan bejegyzéseket nyomtasson ki, amelyek a locate parancs futtatásának időpontjában létező fájlokra utalnak.”

Hogyan lehet a locate parancsot úgy beállítani, hogy figyelmen kívül hagyja a nagy- és kisbetűs megkülönböztetéseket

A locate parancs által végzett keresési művelet alapértelmezés szerint nagy- és kisbetű érzékeny. A -i parancssori kapcsolóval azonban kikényszeríthetjük, hogy az eszköz figyelmen kívül hagyja a nagy- és kisbetűs megkülönböztetéseket.

Egy példával él a rendszeremben két fájl, amelyek neve ‘newfiletosearch.txt’ és ‘NEWFILETOSEARCH.txt’. Tehát, mint láthatod, a fájlnevek ugyanazok, csak az esetük különbözik. Ha megkérjük a locate-ot, hogy keressen mondjuk “*tosearch*”, akkor csak a kisbetűs nevet fogja megjeleníteni a kimeneten:

De a -i parancssori opció használatával a parancs kénytelen figyelmen kívül hagyni a nagy- és kisbetűket, és mindkét fájlnév megjelenik a kimeneten:

A kimeneti bejegyzések ASCII NUL

A locate parancs által előállított kimeneti bejegyzések alapértelmezés szerint újsor (\n) karakterrel vannak elválasztva. De ha akarja, megváltoztathatja az elválasztójelet, és újsor helyett ASCII NUL-t használhat. Ezt a -0 parancssori opcióval teheti meg.

Elvégeztem például ugyanazt a parancsot, amit a fenti utolsó szakaszban használtunk, de hozzáadtam a -0 parancssori opciót:

Így láthatja, hogy az újsor elválasztójel már nincs ott – helyére a NUL került.

A locate adatbázisra vonatkozó információk megtekintése

Ha tudni szeretné, hogy a locate melyik adatbázist használja, valamint az adatbázisra vonatkozó egyéb statisztikákat, használja az -S parancssori opciót.

Hogyan keressünk pontos fájlnevet a locate segítségével

Az alapértelmezés szerint, amikor egy fájlnevet keresünk a locate segítségével, akkor az átadott nevet – mondjuk NAME – implicit módon *NAME* helyettesíti. Ha például a ‘testfile’ fájlnevet keresem, akkor az összes *testfile*-nak megfelelő név megjelenik a kimeneten:

De mi van akkor, ha a követelmény az, hogy pontosan a ‘testfile’-nak megfelelő nevű fájlokat keressük? Nos, ebben az esetben reguláris kifejezéseket kell használnunk, amelyeket a -r parancssori opcióval engedélyezhetünk. Tehát, íme, így kereshet csak a ‘testfile’-ra a reguláris kifejezések segítségével:

locate -r /testfile$

Ha még nem ismeri a reguláris kifejezéseket, akkor irány ide.

Következtetés

A Locate sokkal több lehetőséget kínál, de az itt tárgyaltaknak elegendőnek kell lenniük ahhoz, hogy alapvető képet kapjon a parancssori segédprogramról, valamint hogy elindulhasson. Azt tanácsoljuk, hogy először próbálja ki az összes itt leírt opciót a Linux gépén, majd váltson át a többire, amelyeket az eszköz man oldalán találhat meg.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.