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

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

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

Установка locate

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

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

Установить 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 [ОПЦИИ] ШАБЛОН…

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

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

locate .bashrc

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

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

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

locate *.md

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

locate -n 10 *.py

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

locate -i readme.md

/home/user/1/readme.md
/home/user/2/README.md
/home/user/3/ReadMe.md

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

locate -c .bashrc

6

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

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

locate -e *.json

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

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

Заключение

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

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

Команда locate
Метки:                        

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

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