Яка різниця між "locate" та "find" в Linux?


Відповіді:


38

findпошуки в реальній системі. Більш повільний, але завжди сучасний і має більше опцій (розмір, час модифікації, ...)

locateвикористовує раніше вбудовану базу даних (команду updatedb). Це набагато швидше, але використовує "старішу" базу даних і шукає лише імена або частини з них.

У будь-якому випадку man findі man locateдопоможе вам далі.


1
... і updatedbробити щось подібне find / -type f | gzip > locate.gz.
Ф. Хаурі

10
unix.stackexchange.com/questions/60205/… відповідає на це питання детальніше.
горіх про natty

3

І команди, locateі findкоманди знайдуть файл, але вони працюють зовсім іншими способами.

locate працюватиме в режимі офлайн:

  • Для простого пояснення, база даних індексування файлів у системі Unix під назвою slocate перелічить місця всіх файлів, які постачаються з системою Unix. Коли ви виконаєте locate, він використовуватиме цю базу даних для пошуку певного файлу. Проблема locateполягає в тому, що якщо ви щойно створили файл, який ви зараз хочете шукати, пошук не буде працювати, оскільки база даних слотатів не є оновленою. Щоб подолати цю проблему, ви можете використовувати , updatedbщоб оновити slocate базу даних. Виконання locateще раз знайде нещодавно створений файл. Таким чином, багато системних адміністраторів Linux використовують cronзавдання, щоб регулярно оновлювати базу даних slocate .

find працюватиме в режимі онлайн / "в режимі реального часу".

  • Він фактично перейде до пошуку всіх каталогів, щоб знайти конкретний файл, і він вивчить кожен файл один за одним. Тому потрібно багато дзвінків вводу / виводу.

Отже, виходячи з природи, зрозуміло, що знайти швидше, ніж знайти, але знайти - це в реальному часі.

Сподіваюся, що це допоможе прояснити ідею. Все найкраще. :)


0

locate просто переглядає свою базу даних і повідомляє про розташування файлу.

find не використовує базу даних, вона обходить всі каталоги та їх підкаталоги та шукає файли, що відповідають заданому критерію.


0

Альтернативою використанню знахідки є команда locate. Ця команда часто швидша і може легко шукати всю файлову систему. Ви можете встановити команду за допомогою apt-get:

sudo apt-get update
sudo apt-get install mlocate

Причина пошуку швидша, ніж пошук, тому що вона спирається на базу даних файлів у файловій системі. База даних зазвичай оновлюється раз на день за допомогою сценарію cron, але ви можете оновити її вручну, ввівши:

sudo updatedb

Запустіть цю команду зараз. Пам'ятайте, що база даних завжди повинна бути оновленою, якщо ви хочете знайти нещодавно придбані або створені файли.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.