39

Почему в Linux есть две схожие команды? и каковы обычно условия для использования каждого из них?

4 ответа4

37

find поиски в реальной системе. Это медленнее, но всегда актуально и имеет больше возможностей (размер, время модификации, ...)

locate использует ранее созданную базу данных (команда updatedb). Это намного быстрее, но использует «более старую» базу данных и ищет только имена или их части.

В любом случае, man find и man locate поможет вам в дальнейшем.

3

Команды locate и find найдут файл, но работают они совершенно по-разному.

locate будет работать в автономном режиме:

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

find будет работать в режиме онлайн / в режиме реального времени.

  • На самом деле он будет искать все каталоги, чтобы найти конкретный указанный файл, и проверять каждый файл один за другим. Следовательно, требуется много вызовов ввода / вывода.

Итак, исходя из природы, ясно, что найти быстрее, чем найти, но найти в режиме реального времени.

Надеюсь, это поможет прояснить идею. Всего наилучшего. :)

0

locate просто просматривает свою базу данных и сообщает о местонахождении файла.

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

0

Альтернативой использованию find является команда locate. Эта команда часто выполняется быстрее и может легко выполнять поиск по всей файловой системе. Вы можете установить команду с помощью apt-get:

sudo apt-get update
sudo apt-get install mlocate

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

sudo updatedb

Запустите эту команду сейчас. Помните, что база данных всегда должна быть актуальной, если вы хотите найти недавно приобретенные или созданные файлы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .