Утилита find является стандартным инструментом для поиска файлов в Linux, однако, она недостаточно быстро работает для ситуации, когда требуются мгновенные результаты. Если вы хотите найти файл в системе через командную строку, и скорость самый верхний приоритет, то есть еще одна команда, которую вы можете использовать: locate.
Рассмотрим некоторые примеры использования.
1. Как использовать команду locate в Linux.
Команда locate очень проста в использовании. Все, что вам нужно сделать, это передать ей имя файла, который вы хотите найти.
Например, если нужно найти все имена файлов, которые имеют строку имя ‘filename’ в них, то я могу сделать это с помощью найти следующим образом:
locate filename
2. Как команда locate работает и почему работает быстро.
Объяснением быстрой работы программы является то, что в отличии от find она не читает файловую систему, поиск идет в базе данных. Это с одной стороны обеспечивает скорость работы, с другой имеет существенный недостаток – после того, как вы добавляете новый файл или каталог locate ничего не найдет, необходимо провести индексацию базы.
sudo updatedb
3. Как узнать количество одинаковых записей.
locate -с filename
4. Как заставить locate выдавать только те записи, которые существуют на данный момент.
После того, как файл или каталог был удален, вам необходимо опять обновить базу, так как в противном случае команда будет продолжать показывать на файл, которого уже нет. Однако вы можете пропустить обновление базы и по прежнему иметь правильную выдачу результата если запустите программу с ключом -e.
locate -e filename
5. Как игнорировать регистр при поиске.
Если Вы хотите, чтобы locate не делала различие между строчными и прописными нужно использовать опцию -i.
locate -i filename
6. Как вывести выдачу в одну строку.
По умолчанию, в случае нахождения нескольких результатов с одинаковыми названиями, они выводятся по очереди, каждый на новой строке (символ ASCII ‘\n’ в конце строки.) Если нужно вывести в одну строку:
locate -0 filename
7. Как узнать местоположение базы программы locate.
Используя ключ -S, можно увидеть, где расположена база программы locale, а также некоторую другую статистику: количество индексируемых каталогов, файлов, размер базы.
locate -S
8. Поиск по точному имени файла.
По умолчанию, при поиске по имени файла, например, filename – он неявно заменяется на *filename*. То есть в выдачу попадают все файлы, в которых присутствует имя filename. Как потребовать найти файлы с именами, точно совпадающие ‘filename’?
locate -r /filename $
Locate предлагает гораздо больше возможностей, но те, которые мы рассмотрели здесь должно быть достаточно чтобы дать вам общее представление.