locate to twój skrót do znajdowania plików po nazwie — zamiast przeczesywać cały dysk w locie (jak robi find), zagląda do gotowej bazy danych zbudowanej wcześniej przez updatedb. Efekt: wynik dostajesz w ułamku sekundy, nawet na dysku z milionami plików. Wpisujesz fragment nazwy, a locate wypluwa pełne ścieżki do wszystkiego, co pasuje. Haczyk jest jeden: szuka w indeksie, a nie na żywym systemie, więc plik utworzony pięć minut temu może jeszcze nie istnieć w bazie. O tym za chwilę.
Składnia i najważniejsze opcje
Podstawowa forma jest banalna:
locate [OPCJE] WZORZEC
-i(--ignore-case) — ignoruje wielkość liter w nazwie i wzorcu.-c(--count) — zamiast ścieżek wypisuje samą liczbę dopasowań.-b(--basename) — dopasowuje tylko nazwę pliku, nie całą ścieżkę.-r(--regexp) — traktuje wzorzec jako wyrażenie regularne (POSIX), a nie glob.-e(--existing) — pokazuje tylko pliki, które naprawdę istnieją w chwili wywołania.-l N(--limit N) — ogranicza liczbę wyników do N.-0(--null) — rozdziela wyniki znakiem NUL, idealne do przekazania przezxargs -0.-S(--statistics) — wyświetla statystyki bazy (ile plików, rozmiar) zamiast szukać.
Przykłady użycia
locate nginx.conf— znajduje wszystkie ścieżki zawierającenginx.conf.locate -i readme— szuka README, ReadMe, readme itd., niezależnie od wielkości liter.locate -c .log— zlicza, ile wpisów w bazie zawiera.log(bez wypisywania ich).locate -b '\bashrc'— dopasowuje dokładnie nazwębashrcw bazie (znak\wyłącza domyślne dosklejanie gwiazdek do wzorca).locate -r '/etc/.*\.conf$'— wyrażeniem regularnym znajduje wszystkie pliki.confw/etc.
Częste błędy i pułapki
Numer jeden: świeży plik się nie pokazuje. Baza nie aktualizuje się sama na bieżąco — w wielu dystrybucjach robi to cron raz dziennie. Jeśli właśnie coś utworzyłeś i tego nie widzisz, odśwież indeks ręcznie: sudo updatedb. Odwrotny problem: locate pokazuje plik, którego już nie ma — bo wpis siedzi w bazie. Wtedy ratuje flaga -e.
Druga rzecz: na minimalnym systemie czy w kontenerze polecenia może w ogóle nie być — pakiet to zwykle mlocate albo plocate (szybszy następca). Składnia jest niemal identyczna, ale drobne flagi potrafią się różnić, więc w razie wątpliwości zerknij w man locate. Pamiętaj też, że locate respektuje uprawnienia: domyślnie nie pokaże plików, do których twój użytkownik nie ma dostępu.
Powiązane komendy: updatedb (budowa bazy), find (przeszukiwanie na żywo, wolniejsze, ale aktualne), which i whereis (lokalizowanie binarek i dokumentacji).