Команды Linux · 5 min read · Sep 17, 2025
Команда locate в Linux для начинающих (8 примеров)

Команда locate в Linux — это мощная утилита, используемая для быстрого поиска файлов и каталогов по их именам. Она использует предварительно созданную базу данных, которая обычно обновляется периодически командой updatedb, для выполнения быстрых поисков, что делает её значительно быстрее других инструментов поиска, таких как find. Когда пользователь вводит команду locate, за которой следует шаблон поиска, она сканирует эту базу данных, а не файловую систему, предоставляя результаты почти мгновенно. Это делает locate особенно полезным для системных администраторов и пользователей, которым необходимо быстро находить файлы без нагрузки от сканирования живой файловой системы. Однако точность locate зависит от того, как часто обновляется база данных, так как она может не отражать самые последние изменения в файловой системе до следующего обновления.
В этом руководстве мы объясним команду locate с простыми примерами. Пожалуйста, обратите внимание, что все инструкции/примеры, упомянутые здесь, были протестированы на Ubuntu 24.04.
1. Установка команды locate
Команда locate не предустановлена в Ubuntu и Debian Linux. Вы можете установить её с помощью этой команды:
sudo apt install locate
Locate выполняет поиск файлов на основе предварительно скомпилированной базы данных имен файлов, что делает его намного быстрее, чем, например, команда find при выполнении последующих поисков. Но прежде чем мы сможем использовать её, нам нужно создать и обновить базу данных файлов. Выполните следующую команду, чтобы создать базу данных locate:
sudo updatedbТеперь мы готовы начать использовать locate.
2. Как использовать команду locate в Linux
Команда locate очень проста в использовании. Вам просто нужно передать имя файла, который вы хотите найти.
locate [filename]Например, если я хочу найти все имена файлов, которые содержат строку ‘dir2’, то я могу сделать это с помощью locate следующим образом:
Примечание: Команда ‘locate dir2’ (без звездочек) также сработает, так как locate неявно заменяет имя, которое вы передаете (например, NAME), на NAME.
3. Как работает команда locate, или почему она такая быстрая
Locate работает так быстро, потому что она не читает файловую систему для поиска имени файла или каталога. Она обращается к базе данных (подготовленной командой updatedb), чтобы найти то, что ищет пользователь, и на основе этого поиска выдает свой вывод.
Хотя это хороший подход, у него есть свои недостатки. Основная проблема заключается в том, что после создания каждого нового файла или каталога в системе вам нужно обновить базу данных инструмента, чтобы он работал правильно. В противном случае команда не сможет найти файлы/каталоги, которые были созданы после последнего обновления базы данных.
Например, если я попытаюсь найти файлы с именами, содержащими строку ‘tosearch’ в каталоге ‘Загрузки’ моей системы, команда find выдаст один результат в выводе:
Но когда я попытаюсь выполнить тот же поиск с помощью команды locate, она не выдаст никакого результата.
Это означает, что база данных, в которой ищет locate, не была обновлена после создания файла в системе. Итак, давайте обновим базу данных, что можно сделать с помощью команды updatedb. Вот как это сделать:
sudo updatedbА теперь, когда я снова выполню ту же команду locate, она покажет файлы в выводе:
Аналогично, после удаления файла или каталога вам нужно убедиться, что база данных locate была обновлена, так как в противном случае команда продолжит показывать файл в своем выводе при поиске.
4. Как заставить locate выводить количество совпадающих записей в выводе
Как мы видели, команда locate выдает имена совпадающих файлов и их полные или абсолютные пути в выводе. Но если вы хотите, вы можете использовать инструмент, чтобы подавить всю эту информацию и просто вывести количество совпадающих записей. Это можно сделать с помощью командной опции -c.
5. Как заставить locate выводить только те записи, которые соответствуют существующим файлам
Как мы уже обсуждали ранее в этой статье, если файл удален из системы, то до тех пор, пока вы не обновите базу данных locate снова, команда продолжит показывать это имя файла в выводе. Однако для этого конкретного случая вы можете пропустить обновление базы данных и все равно получить правильные результаты в выводе, используя командную опцию -e.
Например, я удалил файл ‘filetosearch.txt’ из своей системы. Это было подтверждено командой find, которая больше не могла найти файл:
Но когда я выполнил ту же операцию с помощью locate, он все еще показывал файл в выводе:
И мы знаем почему - потому что база данных locate не была обновлена после удаления файла. Однако использование опции -e решило проблему:
Вот что говорит страница man для locate об этой опции: “Выводить только записи, которые относятся к файлам, существующим на момент выполнения locate.”
6. Как заставить locate игнорировать различия в регистре
По умолчанию операция поиска, выполняемая командой locate, чувствительна к регистру. Но вы можете заставить инструмент игнорировать различия в регистре, используя командную опцию -i.
Например, у меня есть два файла в системе, названные ‘newfiletosearch.txt’ и ‘NEWFILETOSEARCH.txt’. Как видите, имена файлов одинаковые, только регистры разные. Если вы попросите locate искать, скажем, ”tosearch“, то он покажет только имя в нижнем регистре в своем выводе:
Но использование командной опции -i заставляет команду игнорировать регистр, и оба имени файлов выводятся:
7. Как разделить записи вывода с помощью ASCII NUL
По умолчанию записи вывода, которые производит команда locate, разделяются с помощью символа новой строки ( ). Но если вы хотите, вы можете изменить разделитель и использовать ASCII NUL вместо новой строки. Это можно сделать с помощью командной опции -0.
Например, я выполнил ту же команду, которую мы использовали в предыдущем разделе, но добавил командную опцию -0:
Таким образом, вы можете видеть, что разделитель новой строки больше не присутствует - он был заменен на NUL.
8. Как просмотреть информацию о базе данных locate
Если вы хотите узнать, какую базу данных использует locate, а также другую статистику о базе данных, используйте командную опцию -S.
9. Как искать точное имя файла с помощью locate
По умолчанию, когда вы ищете имя файла с помощью locate, имя, которое вы передаете - скажем, NAME - неявно заменяется на NAME. Например, если я ищу имя файла ‘testfile’, то все имена, соответствующие testfile, будут выданы в выводе:

Но что если требуется искать файлы с именами, точно совпадающими с ‘testfile’? В этом случае вам нужно будет использовать регулярные выражения, которые можно включить с помощью командной опции -r. Итак, вот как вы можете искать только ‘testfile’ с помощью регулярных выражений:
locate -r /testfile$Если вы новичок в регулярных выражениях, перейдите сюда. Чтобы переключиться на другой каталог, вы можете использовать команду cd оболочки.
Заключение
Locate предлагает гораздо больше опций, но те, которые мы обсудили здесь, должны быть достаточными, чтобы дать вам общее представление о командной утилите, а также помочь вам начать. Мы советуем вам попробовать все описанные здесь опции на вашем компьютере с Linux, а затем перейти к другим, которые вы можете найти на странице man инструмента.
Get new posts in your inbox
No spam. Unsubscribe anytime.