Linux Locate Command for Beginners (8 Examples)

While find jest bez wątpienia jednym z najbardziej popularnych jak również potężnych narzędzi wiersza poleceń do wyszukiwania plików w Linuksie, nie jest ono wystarczająco szybkie dla sytuacji w których potrzebujesz natychmiastowych rezultatów. Jeśli chcesz przeszukać plik w swoim systemie z linii poleceń, a szybkość jest dla ciebie priorytetem, to istnieje inne polecenie, którego możesz użyć: Locate.

W tym samouczku, omówimy polecenie locate używając łatwych do zrozumienia przykładów. Proszę zauważyć, że wszystkie instrukcje/przykłady wymienione tutaj zostały przetestowane na Ubuntu 16.04 LTS, a wersja locate, której użyliśmy to 0.26.

Jak używać polecenia locate w Linuksie

Polecenie locate jest bardzo łatwe w użyciu. Wszystko, co musisz zrobić, to podać nazwę pliku, którą chcesz przeszukać.

locate 

Na przykład, jeśli chcę wyszukać wszystkie nazwy plików, które mają w sobie ciąg 'dir2′, to mogę to zrobić używając locate w następujący sposób:

Uwaga: Polecenie 'locate dir2′ (bez gwiazdek) również zadziała, ponieważ locate domyślnie zastępuje nazwę, którą podajesz (powiedzmy NAME) przez *NAME*.

Jak działa polecenie locate, czyli dlaczego jest tak szybkie

Powodem, dla którego locate jest tak szybkie, jest to, że nie czyta ono systemu plików dla szukanej nazwy pliku lub katalogu. W rzeczywistości odwołuje się do bazy danych (przygotowanej przez polecenie updatedb), aby znaleźć to, czego szuka użytkownik, i na podstawie tego wyszukiwania produkuje swoje dane wyjściowe.

Choć jest to dobre podejście, ma też swoje wady. Głównym problemem jest to, że po każdym nowym pliku lub katalogu jest tworzony w systemie, trzeba zaktualizować bazę danych narzędzia do pracy poprawnie. W przeciwnym razie, polecenie nie będzie w stanie znaleźć plików/katalogów, które zostały utworzone po ostatniej aktualizacji bazy danych.

Na przykład, jeśli próbuję znaleźć pliki o nazwach zawierających ciąg 'tosearch’ w katalogu 'Downloads’ w moim systemie, polecenie find daje jeden wynik na wyjściu:

Ale kiedy próbuję wykonać to samo wyszukiwanie za pomocą polecenia locate, nie daje ono żadnego wyniku.

To oznacza, że baza danych, w której szuka locate, nie została zaktualizowana po utworzeniu pliku w systemie. Zaktualizujmy więc bazę danych, co można zrobić za pomocą polecenia updatedb. Oto jak to zrobić:

sudo updatedb

A teraz, gdy ponownie uruchamiam to samo polecenie locate, pokazuje ono pliki na wyjściu:

Podobnie, po usunięciu pliku lub katalogu należy się upewnić, że baza danych locate została zaktualizowana, ponieważ w przeciwnym razie polecenie będzie nadal pokazywać plik na wyjściu podczas wyszukiwania.

Jak sprawić, by locate wypisywało liczbę lub liczbę pasujących wpisów na wyjściu

Jak widzieliśmy, polecenie locate wypisuje na wyjściu nazwy dopasowanych plików wraz z ich pełnymi lub bezwzględnymi ścieżkami. Ale jeśli chcesz, możesz sprawić, że narzędzie wyłączy wszystkie te informacje i zamiast tego wypisze tylko liczbę lub liczbę pasujących wpisów. Można to zrobić za pomocą opcji -c wiersza poleceń.

Jak zmusić locate do drukowania tylko tych wpisów, które odpowiadają istniejącym plikom

Jak już omówiliśmy wcześniej w tym artykule, jeśli plik zostanie usunięty z systemu, to dopóki nie uaktualnisz bazy danych locate ponownie, polecenie będzie pokazywać tę nazwę pliku na wyjściu. W tym konkretnym przypadku możesz jednak pominąć aktualizację bazy danych i nadal mieć poprawne wyniki na wyjściu, używając opcji -e w wierszu poleceń.

Na przykład, usunąłem plik 'filetosearch.txt’ z mojego systemu. Zostało to potwierdzone przez polecenie find, które nie było już w stanie przeszukać pliku:

Ale kiedy wykonałem tę samą operację przy użyciu locate, wciąż pokazywało ono plik na wyjściu:

I wiemy dlaczego – ponieważ baza danych locate nie została zaktualizowana po usunięciu pliku. Jednak użycie opcji -e załatwiło sprawę:

Oto, co o tej opcji mówi strona man locate: „Drukuj tylko wpisy, które odnoszą się do plików istniejących w chwili uruchomienia locate.”

Jak sprawić, by locate ignorowało rozróżnianie wielkości liter

Domyślnie operacja wyszukiwania, jaką wykonuje polecenie locate, uwzględnia wielkość liter. Można jednak zmusić narzędzie do ignorowania rozróżniania wielkości liter przy użyciu opcji -i wiersza poleceń.

Na przykład, mam w systemie dwa pliki o nazwach 'newfiletosearch.txt’ i 'NEWFILETOSEARCH.txt’. Jak więc widzisz, nazwy plików są takie same, tylko że ich przypadki są różne. Jeśli poprosisz locate o wyszukanie, powiedzmy, „*tosearch*”, to pokaże ono na wyjściu tylko nazwę pisaną małymi literami:

Ale użycie opcji -i zmusza polecenie do zignorowania wielkości liter i na wyjściu pojawią się obie nazwy plików:

Jak oddzielić wpisy wyjściowe za pomocą ASCII NUL

Domyślnie wpisy wyjściowe, które tworzy polecenie locate, są oddzielane za pomocą znaku nowej linii (\n). Ale jeśli chcesz, możesz zmienić separator, i mieć ASCII NUL zamiast nowej linii. Można to zrobić za pomocą opcji -0 wiersza poleceń.

Na przykład, wykonałem to samo polecenie, którego użyliśmy w ostatniej sekcji powyżej, ale dodałem opcję -0 wiersza poleceń:

Więc możesz zobaczyć, że nie ma już separatora nowej linii – został on zastąpiony przez NUL.

Jak wyświetlić informacje o bazie danych locate

W przypadku, gdy chcesz wiedzieć, z jakiej bazy danych korzysta locate, a także poznać inne statystyki dotyczące bazy danych, użyj opcji wiersza poleceń -S.

Jak wyszukać dokładną nazwę pliku przy użyciu locate

Domyślnie, kiedy wyszukujesz nazwę pliku przy użyciu locate, to nazwa, którą podajesz – powiedzmy NAME – jest niejawnie zastępowana przez *NAME*. Na przykład, jeśli szukam pliku o nazwie 'testfile’, to na wyjściu zostaną wyświetlone wszystkie nazwy pasujące do *testfile*:

A co jeśli wymaganiem jest wyszukiwanie plików o nazwach dokładnie pasujących do 'testfile’? Cóż, w tym przypadku będziesz musiał użyć wyrażeń regularnych, które mogą być włączone przy użyciu opcji -r wiersza poleceń. Tak więc, oto jak możesz wyszukać tylko 'testfile’ używając wyrażeń regularnych:

locate -r /testfile$

Jeśli jesteś nowy w wyrażeniach regularnych, udaj się tutaj.

Zakończenie

Locate oferuje o wiele więcej opcji, ale te, które tutaj omówiliśmy powinny wystarczyć, aby dać ci podstawowe pojęcie o narzędziu wiersza poleceń, jak również abyś mógł zacząć. Radzimy najpierw wypróbować wszystkie opisane tutaj opcje na swoim komputerze z systemem Linux, a następnie przejść do innych, które można znaleźć na stronie man tego narzędzia.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.