Jak korzystać z polecenia locate w określonym katalogu?
16
Korzystam z locatepolecenia w systemie Linux. Moje obecne użycie przeszukuje cały system plików. Chcę tylko, aby wyszukiwała w określonym katalogu. W jaki sposób mogę to zrobić?
TLDR: Oto alias terminala, aby locatewyszukać w określonym katalogu: alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db " Gdy alias zacznie obowiązywać, wpisz typ terminala my_locate *foo*i ruszaj na wyścigi. Możesz łączyć aktualizacje bazy danych i lokalizować wyszukiwanie, używając znaku dwukropka do konkatowania baz danych. rtfm: linux.die.net/man/8/updatedb
Eric Leschinski
Odpowiedzi:
11
Innym podejściem byłoby użycie dopasowania wzorca w locate:
+1 To jest poprawna odpowiedź. Pamiętaj, że jeśli dodasz symbol wieloznaczny, granice zostaną ustalone. To jest w powyższym przykładzie, $ locate '/usr/lib64/*tmpfile'nie zwróci żadnych wyników.
xofer
Jeśli chcesz mieć większą kontrolę niż proste symbole wieloznaczne może zaoferować, można zawsze rur wyniki locatethrough grep.
Ladadadada,
5
Utwórz bazę danych slocate dla określonego katalogu za pomocą:
updatedb -U /path/to/directory
i szukaj za pomocą:
locate <search_string>
AKTUALIZACJA
Działa to dobrze na moim systemie Gentoo, ale CentOS nie zawiera -Uopcji. Możesz więc spróbować poniżej:
„locate -U” generuje błąd nieprawidłowej opcji… Zgadujesz, że miałeś na myśli „updatedb -U”? Warto również zauważyć, że wymaga to przebudowania mlocate.db (zaktualizowanob), jeśli kiedykolwiek chcesz przeszukać inny katalog.
gharper,
Och, na moim Gentoo działa dobrze, ale CentOS nie zawiera tej opcji.
locate
wyszukać w określonym katalogu:alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db "
Gdy alias zacznie obowiązywać, wpisz typ terminalamy_locate *foo*
i ruszaj na wyścigi. Możesz łączyć aktualizacje bazy danych i lokalizować wyszukiwanie, używając znaku dwukropka do konkatowania baz danych. rtfm: linux.die.net/man/8/updatedbOdpowiedzi:
Innym podejściem byłoby użycie dopasowania wzorca w
locate
:Porównaj dane wyjściowe poniższych poleceń:
locate /usr/lib*tmpfile*
daje ten sam wynik.źródło
$ locate '/usr/lib64/*tmpfile'
nie zwróci żadnych wyników.locate
throughgrep
.Utwórz bazę danych slocate dla określonego katalogu za pomocą:
i szukaj za pomocą:
AKTUALIZACJA
Działa to dobrze na moim systemie Gentoo, ale CentOS nie zawiera
-U
opcji. Możesz więc spróbować poniżej:Zbuduj bazę danych za pomocą:
i szukaj:
źródło
updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted
sprawdź, jak używać komendy updatedb jako zwykły użytkownik w systemie Linux .Najprostsza odpowiedź, jaką mogę wymyślić, to
Lepszym rozwiązaniem może być użycie opcji „znajdź” i jej opcji ścieżki ...
źródło
Najprostszym sposobem jest jak w poniższym przykładzie:
Przejdź
$PWD
do określonego katalogu.Powyższy przykład utworzy lokalną bazę danych tylko dla określonego katalogu.
źródło