Próbuję zlokalizować wszystkie kopie example.filename
na moim serwerze FreeBSD. Jaki jest najlepszy / najłatwiejszy / najbardziej efektywny sposób to zrobić?
Próbuję zlokalizować wszystkie kopie example.filename
na moim serwerze FreeBSD. Jaki jest najlepszy / najłatwiejszy / najbardziej efektywny sposób to zrobić?
Odpowiedzi:
find / -name example.filename
locate filename
Znacznie szybciej niż find
, jeśli uruchamiasz usługę lokalizowania i znajduje ona tylko pliki, które istniały w czasie updatedb
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.
find /
na jakimś dużym drzewie lub częściej niż raz w tygodniu, uruchomienie locate
usługi jest prawdopodobnie warte zachodu, ponieważ locate(1)
jest o wiele szybsze.
sudo periodic weekly
aktualizuje locate
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 example.filename
locate uruchamia zadanie cron co noc, które ponownie indeksuje wszystkie pliki na twoim komputerze. Z tego powodu nie zawsze jest aktualne.
Czasami chcesz znaleźć pliki na określonym poziomie katalogu. W takim przypadku wygodne może być użycie symboli wieloznacznych powłoki:
ls /data/*/example.filename
Oczywiście działa to tylko wtedy, gdy masz sztywną strukturę katalogów.
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.
locate example.filename
Aby nie rozróżniać wielkości liter, dodaj -i
.
locate -i eXAmPle.FileName
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.
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 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 z periodic
trasy pozwala uniknąć tego problemu.
Jeśli masz aktualną lokalizację bazy danych, po prostu:
locate example.filename
Czasami tak robię
find . | grep example.filename
jednak prawdopodobnie bardzo nieefektywny.