Zastanawiam się, czy istnieje sposób na zwiększenie find
prędkości w terminalu, nie ma sensu, aby wyszukiwanie w Internecie za pomocą Google google było szybsze niż wyszukiwanie lokalnych ciągów znaków lub po prostu nazw plików.
Zastanawiam się, czy istnieje sposób na lokalną bazę indeksowania, po zbudowaniu w przyszłości polecenie find może być super szybkie.
Lub jakieś inne sugestie?
Dzięki!
Odpowiedzi:
Spróbuj użyć
locate
, powinno robić to, co chcesz.źródło
locate
pochodzi (zwykleslocate
), i użycie goupdatedb
do przebudowania bazy danych. :-)To zależy w dużej mierze od twojego kryterium wyszukiwania.
Jeśli szukasz nazw plików lub wzorców nazw plików, lokalizowanie jest znacznie szybsze, ale nie nadaje się do świeżo wygenerowanych plików, ponieważ używany indeks jest zwykle aktualizowany tylko raz dziennie. Ale jeśli możesz go użyć, jest super szybki.
Ale za pomocą funkcji Znajdź można wyszukiwać rozmiar pliku, wiek pliku i inne rzeczy, których nie można przeszukiwać według lokalizacji.
Jeśli wiesz, gdzie szukać, możesz użyć ścieżki do ograniczenia zakresu wyszukiwania:
przeszukiwałby tylko pliki od 2 do 10 M, maksymalnie 1 rok w / some / path.
Programy dostępne na ścieżce można przeszukiwać według, plików pomocy, lib i plików konfiguracyjnych z whereis. Przykłady:
źródło
Posługiwać się
locate
Powodem jest to, że
locate
korzysta z bazy danych wszystkich istniejących katalogów i plików, która została już zbudowana tak, jak sobie wyobrażałeś!http://linux.about.com/od/commands/l/blcmdl5_locatedb.htm
Po ustalonym (i zmiennym) odstępie czasu uruchamiane zadanie skanuje system plików, a następnie tworzy z nim bazę danych. To właśnie ta baza danych (znajduje sięb) z odpowiednimi indeksami
locate
przeciwdziała poleceniu zamiast skanować w tym momencie dysk twardy.Plusem jest to, że jest bardzo szybki w porównaniu ze skanowaniem dysku twardego. Minusem jest to, że zlokalizowana baza danych (umiejscowionab) nie jest „aktywna”, więc można jej używać tylko do plików, które istniały „od” ostatniego skanowania.
Aby zaktualizować umiejscowionyb teraz uruchom
updatedb
(lub wsudo updatedb
razie potrzeby)btw Właśnie uruchomiłem
sudo updatedb
lokalnie i zajęło 3 1/2 sekundy! Mam 31 000 plików.źródło
Jak zauważyli inni, lokalizowanie może być lepszym narzędziem dla prostszego wyszukiwania.
Jednak w przypadku bardziej skomplikowanych wyszukiwań prawdopodobnie utknąłeś w wyszukiwaniu.
Jednym ze sposobów przyspieszenia wyszukiwania jest zawężenie katalogu, w którym znajdują się twoje pliki, zamiast przeszukiwania całego katalogu głównego.
źródło
dla pojedynczej operacji wyszukiwania; Nie znalazłem żadnego przyspieszenia; chyba że spróbujesz zawęzić wyszukiwanie za pomocą
find
opcji.Jednak; jeśli chcesz wykonać wiele
find
operacji na tym samym zestawie plików ; Mam znaczne przyspieszenie zapełniania pliku tymczasowego wszystkimi nazwami plików i używaniagrep
. Oczywiście nie uwzględnia to plików dodawanych lub usuwanych.źródło