Próbuję zlokalizować wszystkie kopie example.filenamena moim serwerze FreeBSD. Jaki jest najlepszy / najłatwiejszy / najbardziej efektywny sposób to zrobić?
inne flagi „znajdź”, które mogą być odpowiednie, w zależności od potrzeby: -type f (nie zawraca sobie głowy katalogami lub dowiązaniami symbolicznymi o tej samej nazwie) -ls (aby wyświetlić szczegóły takie jak rozmiar pliku, np. jeśli pliki mają takie same nazwa, ale inna treść)
Zac Thompson
19
locate filename
Znacznie szybciej niż find, jeśli uruchamiasz usługę lokalizowania i znajduje ona tylko pliki, które istniały w czasie updatedbostatniego uruchomienia (zwykle noc przed kontrolą zadania cron).
Ty można uruchomić updatedbręcznie, ale to jeszcze wolniej niż Cletus sugerujefind , i wymaga korzeń. Czasami aktualizuję bazę danych ręcznie po zainstalowaniu kilku nowych rzeczy.
Lokalizowanie działa tylko wtedy, gdy masz uruchomioną usługę budowania bazy danych lokalizacji (zapomnij, jak się nazywa). Może również cierpieć z powodu opóźnienia czasowego (w tym, że plik, którego szukasz, mógł zostać dodany od ostatniej kompilacji).
cletus
Zmiany i komentarze skrzyżowane na drucie. Chłodny. Masz oczywiście rację w obu przypadkach.
dmckee --- były moderator kociak
4
Jeśli znajdziesz się find /na jakimś dużym drzewie lub częściej niż raz w tygodniu, uruchomienie locateusługi jest prawdopodobnie warte zachodu, ponieważ locate(1)jest o wiele szybsze.
Drew Stephens
@cletus Running sudo periodic weeklyaktualizuje locatebazę danych. Uruchom to po każdej instalacji lub pobraniu, które może zawierać żądane pliki.
Basil Bourque
2
Jeśli masz już zlokalizowane (inaczej slocate), to
locate example.filename
locate uruchamia zadanie cron co noc, które ponownie indeksuje wszystkie pliki na twoim komputerze. Z tego powodu nie zawsze jest aktualne.
Jak wspomniano inni, locateto szybki sposób na znalezienie pliku. To polecenie używa wstępnie skompilowanego indeksu nazw plików i folderów. Ta baza nazw jest przeszukiwana zamiast przeszukiwać system plików.
locate example.filename
Aby nie rozróżniać wielkości liter, dodaj -i.
locate -i eXAmPle.FileName
Zaktualizuj locatebazę danych
Baza danych, z której korzysta, locatemusi być aktualna. Po zainstalowaniu lub pobraniu, który może zawierać żądany plik, musisz zaktualizować locatebazę danych.
Baza locatedanych zostanie ostatecznie automatycznie zaktualizowana przez twój system FreeBSD. Istnieje cotygodniowy zestaw prac obejmujących to zadanie. Te obowiązki są wymienione w /etc/periodic/weekly/310.locateskrypcie.
Najprostszym najbezpieczniejszym sposobem wymuszenia wczesnej aktualizacji locatebazy danych jest wymuszenie cotygodniowego zestawu zadań do wykonania teraz.
sudo periodic weekly
Lub możesz nawet zmusić wszystkie zwykłe obowiązki do wykonania. Możesz to zrobić natychmiast po skonfigurowaniu nowego systemu FreeBSD.
sudo periodic daily weekly monthly
Jeśli korzystasz z innych metod aktualizacji locatebazy danych, możesz otrzymać komunikat o niebezpieczeństwie, ujawniając nazwy wszystkich plików systemu każdemu użytkownikowi w systemie FreeBSD. Korzystanie z periodictrasy pozwala uniknąć tego problemu.
Tak, to pasuje do wszystkiego, a następnie wyrzuca wszystko oprócz tego jednego nazwiska, którego szukałeś. Zamiast tego możesz po prostu zrobić „find -name” example.filename ”, który robi dokładnie to samo, bez uprzedniego wydrukowania wszystkiego i bez dodatkowego procesu grep.
Odpowiedzi:
źródło
Znacznie szybciej niż
find
, jeśli uruchamiasz usługę lokalizowania i znajduje ona tylko pliki, które istniały w czasieupdatedb
ostatniego uruchomienia (zwykle noc przed kontrolą zadania cron).Ty można uruchomić
updatedb
ręcznie, ale to jeszcze wolniej niż Cletus sugerujefind
, i wymaga korzeń. Czasami aktualizuję bazę danych ręcznie po zainstalowaniu kilku nowych rzeczy.źródło
find /
na jakimś dużym drzewie lub częściej niż raz w tygodniu, uruchomienielocate
usługi jest prawdopodobnie warte zachodu, ponieważlocate(1)
jest o wiele szybsze.sudo periodic weekly
aktualizujelocate
bazę danych. Uruchom to po każdej instalacji lub pobraniu, które może zawierać żądane pliki.Jeśli masz już zlokalizowane (inaczej slocate), to
locate uruchamia zadanie cron co noc, które ponownie indeksuje wszystkie pliki na twoim komputerze. Z tego powodu nie zawsze jest aktualne.
źródło
Czasami chcesz znaleźć pliki na określonym poziomie katalogu. W takim przypadku wygodne może być użycie symboli wieloznacznych powłoki:
Oczywiście działa to tylko wtedy, gdy masz sztywną strukturę katalogów.
źródło
locate
Jak wspomniano inni,
locate
to szybki sposób na znalezienie pliku. To polecenie używa wstępnie skompilowanego indeksu nazw plików i folderów. Ta baza nazw jest przeszukiwana zamiast przeszukiwać system plików.Aby nie rozróżniać wielkości liter, dodaj
-i
.Zaktualizuj
locate
bazę danychBaza danych, z której korzysta,
locate
musi być aktualna. Po zainstalowaniu lub pobraniu, który może zawierać żądany plik, musisz zaktualizowaćlocate
bazę danych.Baza
locate
danych zostanie ostatecznie automatycznie zaktualizowana przez twój system FreeBSD. Istnieje cotygodniowy zestaw prac obejmujących to zadanie. Te obowiązki są wymienione w/etc/periodic/weekly/310.locate
skrypcie.Najprostszym najbezpieczniejszym sposobem wymuszenia wczesnej aktualizacji
locate
bazy danych jest wymuszenie cotygodniowego zestawu zadań do wykonania teraz.Lub możesz nawet zmusić wszystkie zwykłe obowiązki do wykonania. Możesz to zrobić natychmiast po skonfigurowaniu nowego systemu FreeBSD.
Jeśli korzystasz z innych metod aktualizacji
locate
bazy danych, możesz otrzymać komunikat o niebezpieczeństwie, ujawniając nazwy wszystkich plików systemu każdemu użytkownikowi w systemie FreeBSD. Korzystanie zperiodic
trasy pozwala uniknąć tego problemu.źródło
Jeśli masz aktualną lokalizację bazy danych, po prostu:
źródło
Czasami tak robię
jednak prawdopodobnie bardzo nieefektywny.
źródło