Как использовать команду Locate в Linux

12 set 2022 3 min di lettura
Как использовать команду Locate в Linux
Indice dei contenuti

Введение

Одной из самых распространенных операций при работе в Linux является поиск файлов и каталогов. В системах Linux есть несколько команд, которые позволяют вам искать файлы, наиболее часто используемыми являются find и locate.

Команда locate — это самый быстрый и простой способ поиска файлов и каталогов по их именам.

В этом уроке мы объясним, как использовать команду locate.

Найдите установку команды

В зависимости от вашего дистрибутива и того, как ваша система была подготовлена, пакет locate может быть предварительно установлен или не установлен в вашей системе Linux.

Чтобы проверить, установлена ли в вашей системе утилита locate, откройте терминал, введите locate и нажмите ENTER. Если пакет установлен, система locate: не будет отображаться указанный шаблон для поиска, в противном случае вы увидите что-то вроде locate command not found.

Если locate не установлен, вы можете легко установить его с помощью менеджера пакетов вашего дистрибутива.

Установить локацию на Ubuntu и Debian

sudo apt update
sudo apt install mlocate

Установить локацию на CentOS и Fedora

sudo yum install mlocate

Как найти

Команда locate ищет определенный шаблон в файле базы данных, сгенерированном командой updatedb. Найденные результаты выводятся на экран по одному в строке.

Во время установки пакета mlocate создается задание cron, которое запускает команду updatedb каждые 24 часа. Это гарантирует регулярное обновление базы данных. Дополнительные сведения о процессе cron см. в файле /etc/cron.daily/mlocate.

Базу данных можно обновить вручную, запустив команду updatedb от имени пользователя root или пользователя с привилегиями sudo:

sudo updatedb

Процесс обновления займет некоторое время, в зависимости от количества файлов и каталогов и скорости системы.

Файлы, созданные после обновления базы данных, не будут отображаться в результатах обнаружения.

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

Как использовать команду локации

Синтаксис команды locate следующий:

locate [OPTION] PATTERN...

В своей простейшей форме, при использовании без каких-либо параметров, команда locate напечатает абсолютный путь ко всем файлам и каталогам, которые соответствуют шаблону поиска и для которых у пользователя есть разрешение на чтение.

Например, чтобы найти файл с именем .bashrc, вам нужно ввести:

locate.bashrc

Вывод будет включать в себя имена всех файлов, которые содержат строку .bashrc в своих именах:

/etc/bash.bashrc
 /etc/skel/.bashrc
 /usr/share/base-files/dot.bashrc
 /usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
 /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc

Файл /root/.bashrc не появится, потому что мы запускали команду от имени обычного пользователя, у которого нет прав доступа к корневому каталогу /.

Если список результатов длинный, вы можете перенаправить вывод на команду less для лучшей читабельности:

locate.bashrc | less

Команда locate также принимает шаблоны, содержащие подстановочные символы, такие как подстановочный знак *. Когда в шаблоне нет лишних символов, команда ищет *ШАБЛОН*, поэтому в предыдущем примере мы отобразили все файлы, имена которых содержат шаблон поиска.

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

locate *.md

Чтобы ограничить результаты поиска, используйте параметр -n, за которым следует количество результатов, которые вы хотите отобразить. Например, следующая команда выполнит поиск всех файлов .py и отобразит только 10 результатов:

locate -n 10 *.py

По умолчанию locate выполняет поиск с учетом регистра. Опция -i ( --ignore-case ) предписывает locate игнорировать регистр и выполнять поиск без учета регистра.

locate -i readme.md
/home/noviello/p1/readme.md
 /home/noviello/p2/README.md

Чтобы просмотреть количество всех совпадающих записей, используйте параметр -c (--count). Следующая команда вернет количество всех файлов, которые содержат .bashrc в своих именах:

locate -c.bashrc
5

По умолчанию locate не проверяет, существуют ли еще найденные файлы в файловой системе. Если файл был удален после последнего обновления базы данных, если файл соответствует шаблону поиска, он будет включен в результаты поиска.

Чтобы отобразить только имена файлов, существующих во время выполнения, используйте параметр -e (--existing) . Например, следующий код вернет только существующие файлы .json:

locate -e *.json

Если вам нужно выполнить более сложный поиск, вы можете использовать параметр -r (--regexp), который позволяет выполнять поиск с использованием обычного регулярного выражения вместо шаблонов. Эту опцию можно указать несколько раз. Например, для двух типов расширений файлов выполните поиск всех файлов .mp4 и .avi:

locate --regex -i "(\.mp4|\.avi)"

Вывод

Команда locate ищет в файловой системе файлы и каталоги, имена которых соответствуют определенному шаблону. Синтаксис команды легко запомнить, а результаты отображаются практически мгновенно.

Для получения дополнительной информации о команде locate введите man locate в терминале.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.