Поиск файлов при помощи locate

Многие пользователи Linux используют программу find, чтобы отыскать нужные файлы в системе. Например, так:

Конечно же, возможности find гораздо более обширны, нежели просто поиск файлов по шаблону. Например, если вам нужно отыскать файлы, в которых бит разрешения записи установлен для владельца, а также для группы-владельца файлов, можно использовать команду:

или, возможно, файлы в каталоге Downloads, которые были изменены за последние 24 часа:

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


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

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

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

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

mlocate обладает некоторыми дополнительными возможностями, например, умением следовать по символическим ссылкам или использовать регулярные выражения. Все возможности mlocate описаны в её man-странице, так что, кому нужно чуть больше, чем «стандартный» поиск — милости просим. Обязательно потратьте немного времени и поиграйтесь с mlocate. Уверен, вы оцените её по достоинству!

По мотивам linux-blog.org