Поиск файлов в Linux при помощи команды locateИсточник: rus-linux А.Панин
Оригинал: Find files on Linux with the command locate Только что я понял, что я ни разу не писал об одной из моих любимых программ, используемых в командной оболочке Linux: locate. Эта программа принимает в качестве параметра имя файла (или часть имени) и моментально выводит список путей до этого файла в файловой системе; альтернативой этой программе является find, но разница между ними заключается в том, что find производит поиск по файловой системе и требуется значительный период времени для получения результата, а отличие в работе этих программ состоит в том, что locate использует собственную базу данных для хранения имен файлов в то время, как find исследует директории в поисках заданного параметром командной строки имени файла. База данных locate mlocate.dbДля получения результатов, соответствующих действительности, вам необходимо поддерживать в обновленном состоянии базу данных со списком имен файлов. Операционная система может быть настроена таким образом, что обновление будет выполняться автоматически как задача cron. Например, в моей операционной системе Ubuntu 12.04 эта задача описана в файле /etc/cron.daily/mlocate и выполняется ежедневно. Если в вашем дистрибутиве обновление по умолчанию отключено, можно обновить базу данных вручную при помощи команды sudo updatedb (требуются права пользователя root); это очень удобно в том случае, когда вы только что установили пакеты с программным обеспечением и хотите найти какой-либо файл, так как время, уходящее на обновление базы данных при помощи updatedb, всегда меньше времени на поиск файлов по всей файловой системе при помощи find. Обычно база данных расположена в /var/lib/mlocate/mlocate.db и вы можете контролировать то, какие файлы и файловые системы будут исследованы при обновлении базы данных с помощью файла конфигурации, расположенного в /etc/updatedb.conf Ниже приведено содержимое файла конфигурации в моей системе: PRUNE_BIND_MOUNTS="yes" В том случае, если директории подпадают под критерии, приведенные в качестве параметров переменных PRUNEFS, PRUNENAMES или PRUNEPATHS, updatedb не производит исследование содержимого этой директории. Тем не менее, сама директория добавляется в базу данных. Ниже приведено подробное описание параметров, которые можно использовать в этом файле:
Использование locateТеперь, когда мы настроили и обновили базу данных, мы можем начать использовать команду locate (в рамках обычной пользовательской учетной записи или учетной записи пользователя root - на ваше усмотрение); ниже приведено несколько примеров использования: Типичный пример использования - поиск файла $ locate php.ini Эта команда должна вывести список путей, по которым вы можете обнаружить файлы с названием php.ini. Вывод должен быть аналогичен представленному ниже: /etc/php5/cgi/php.ini /etc/php5/cli/php.ini /etc/php5/fpm/php.ini /usr/share/doc/php5-common/examples/php.ini-development /usr/share/php5/php.ini-production /usr/share/php5/php.ini-production.cli Это очень полезная команда в том случае, когда вам нужно внести изменения в файл конфигурации php, но вы не можете вспомнить, где расположен файл php.ini. Скрытие сообщений об ошибках Вы можете использовать параметр -q для скрытия сообщений об ошибках. Сообщения об ошибках обычно информируют пользователя о том, что нет доступа к файлу ввиду того, что пользователь работает в рамках обычной учетной записи (не записи суперпользователя). Параметр -q позволяет скрыть также и любые другие сообщения об ошибках: $ locate .php -q Ограничение вывода Вы можете использовать параметр -n для ограничения количества возвращаемых результатов поиска заданным количеством строк. Таким образом, вы можете запросить только 10 результатов поиска при помощи следующей команды: $ locate .php -n 10 В результате будут выведены первые 10 файлов с расширением .php. Подсчет количества результатов поиска Вы можете использовать параметр -c для того, чтобы просто узнать количество файлов, соответствующих заданному прототипу поиска, а в данном случае я провожу подсчет файлов с расширением .php: $ locate .php -c 3414 Независимый от регистра поиск Вы можете использовать параметр -i в том случае, когда вам необходимо провести писк файлов без учета регистра. Команда для поиска файлов без учета регистра: $ locate INDEX.php -i В этом случае будут подходить следующие имена файлов: index.php INDEX.PHP Index.Php Информация о базе данных В качестве последнего рассматриваемого параметра стоит упомянуть параметр --statistics, предназначенный для получения информации о базе данных; вместо поиска будет выведена статистика, относящаяся к базе данных mlocate.db. $ locate --statistics Database /var/lib/mlocate/mlocate.db: 6146 directories 57770 files 3564748 bytes in file names 1612746 bytes used to store database ЗаключениеЭта команда помогала мне множество раз в различных ситуациях, поэтому она установлена на каждом сервере или настольном компьютере, который я использую. Я не стал включать раздел об установке программы в эту короткую статью по той причине, что locate доступна в любом дистрибутиве Linux, обычно в пакете с названием mlocate, поэтому вы можете использовать ваш менеджер пакетов для ее установки, и еще я уверен, что вы полюбите ее. |