Найти команду в Linux

Найти команду

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

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

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

Установка locate (команда locate не найдена)

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

Чтобы проверить, установлена ли утилита locate , откройте терминал, введите locate и нажмите Enter . Если пакет установлен, система выведет сообщение locate: no pattern to search for specified . В противном случае вы увидите сообщение: locate command not found .

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

Установка locate в Ubuntu и Debian

 sudo apt update sudo apt install mlocate

Установка locate на CentOS и Fedora

 sudo yum install mlocate

Как locate рабочий

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

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

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

 sudo updatedb

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

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

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

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

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

 locate [ OPTION ] PATTERN...

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

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

 locate .bashrc

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

 /etc/bash.bashrc /etc/skel/.bashrc /home/linuxize/.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 не будет показан, поскольку мы запустили команду как обычный пользователь, не имеющий прав доступа к каталогу /root .

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

 locate .bashrc | less

Команда locate также принимает шаблоны, содержащие символы подстановки, например, подстановочный знак * . Если шаблон не содержит символов подстановки, команда ищет *PATTERN* . Именно поэтому в предыдущем примере были отображены все файлы, содержащие в своих именах искомый шаблон.

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

 locate *.md

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

 locate -n 10 *.py

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

 locate -i readme.md
 /home/linuxize/p1/readme.md /home/linuxize/p2/README.md /home/linuxize/p3/ReadMe.md

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

 locate -c .bashrc
 6

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

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

 locate -e *.json

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

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

Заключение

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

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

Если у вас есть вопросы, не стесняйтесь оставлять комментарии.

определение местоположения терминала

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *