Команда Locate в Linux
Одна из наиболее распространенных операций при работе в Linux — поиск файлов и каталогов. В системах Linux есть несколько команд, которые позволяют вам искать файлы, find и locate наиболее часто используемые команды.
Команда locate — самый быстрый и простой способ поиска файлов и каталогов по их именам.
В этой статье мы объясним, как использовать команду locate в Linux.
Установка команды 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/andreyex/.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/andreyex/p1/readme.md /home/andreyex/p2/README.md /home/andreyex/p3/ReadMe.md
Чтобы отобразить количество всех совпадающих записей, используйте параметр -c( —count). Следующая команда вернет номер всех файлов, содержащихся .bashrc в их именах:
locate -c .bashrc
По умолчанию locate не проверяет, существуют ли найденные файлы в файловой системе. Если вы удалили файл после последнего обновления базы данных, если файл соответствует шаблону поиска, он будет включен в результаты поиска.
Чтобы отобразить только имена файлов, которые существуют в данный момент, в locate используйте параметр -e( —existing). Например, следующее вернет только существующие файлы .json:
locate -e *.json
Если вам нужно выполнить более сложный поиск, вы можете использовать опцию -r( —regexp), которая позволяет выполнять поиск, используя базовое регулярное выражение вместо шаблонов. Эта опция может быть указана несколько раз.
Например, для поиска всех файлов .mp4 и .avi в вашей системе и игнорирования регистра вы должны выполнить:
locate --regex -i "(\.mp4|\.avi)"
Заключение
Команда locate ищет в файловой системе файлы и каталоги, чье имя соответствует заданному шаблону. Синтаксис команды легко запомнить, а результаты отображаются практически мгновенно.
Для получения дополнительной информации обо всех доступных опциях команды locate, наберите man locate в вашем терминале.
Если у вас есть какие-либо вопросы, не стесняйтесь оставлять комментарии.
Команда locate в Linux
Одна из самых распространенных операций при работе в Linux — это поиск файлов и каталогов. В системах Linux есть несколько команд, которые позволяют искать файлы, причем поиск и определение местоположения являются наиболее часто используемыми.
Команда 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/.bashrc команду как обычный пользователь, у которого нет прав доступа к каталогу /root .
Если список результатов длинный, для лучшей читаемости вы можете направить вывод в команду less :
locate .bashrc | less
Команда locate также принимает шаблоны, содержащие символы подстановки, такие как подстановочный знак * . Если в шаблоне нет дополнительных символов, команда ищет *PATTERN* . Поэтому в предыдущем примере отображались все файлы, содержащие в своем имени шаблон поиска.
Подстановочный знак — это символ, используемый для обозначения нуля, одного или нескольких символов. Например, чтобы найти все файлы .md в системе, вы должны ввести:
locate *.md
Чтобы ограничить результаты поиска, используйте параметр -n после которого укажите количество результатов, которые вы хотите отобразить. Следующая команда .py поиск всех файлов .py и отобразит только 10 результатов:
locate -n 10 *.py
По умолчанию locate выполняет поиск с учетом регистра. Параметр -i ( —ignore-case ) указывает locate игнорировать регистр и запускать поиск без —ignore-case регистра.
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
По умолчанию locate не проверяет, существуют ли еще найденные файлы в файловой системе. Если вы удалили файл после последнего обновления базы данных, и если файл соответствует шаблону поиска, он будет включен в результаты поиска.
Чтобы отображать только имена файлов, которые существуют на момент запуска locate , используйте параметр -e ( —existing ). Например, следующее будет возвращать только существующие файлы .json :
locate -e *.json
Если вам нужно выполнить более сложный поиск, используйте параметр -r ( —regexp ), который позволяет вам искать, используя базовое регулярное выражение вместо шаблонов. Этот параметр можно указывать несколько раз.
Например, чтобы найти все файлы .mp4 и .avi в вашей системе и игнорировать регистр, вы должны запустить:
locate --regex -i "(.mp4|.avi)"
Выводы
Команда locate ищет в файловой системе файлы и каталоги, имена которых соответствуют заданному шаблону. Синтаксис команды легко запомнить, а результаты отображаются практически мгновенно.
Для получения дополнительной информации обо всех доступных параметрах команды locate введите команду man locate в вашем терминале.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.
Не работает команда /locate майнкрафт 1.16.5
Скачал майнкрафт, пишу /locate и пишет мол команда не найдена, что делать?
Голосование за лучший ответ
Тоже самое , щас вроде другую используют , но какую именно не знаю
нужно писать /locate
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.
Команда locate в Linux
Команда locate Linux используется для поиска файлов, расположенных на машине пользователя или на сервере. Фактически она выполняет ту же работу, что и команда find, однако, ведёт поиск в собственной базе данных. Find же шаг за шагом проходит через всю иерархию директорий.
Обновление базы данных locate происходит автоматически, как правило, раз в сутки. Настроить желаемый интервал между сканированиями системы можно с помощью планировщика задач Cron.
Синтаксис и опции locate
В эмуляторе терминала команда locate записывается в таком формате:
locate опции шаблон_для_поиска
- -A (—all) — выводит только файлы, соответствующие всем заданным шаблонам.
- -b (—basename) — выводит файл, если его название соответствует шаблону.
- -c (—count) — вместо адресов выводит количество найденных файлов.
- -d (—database) — меняет базу данных для поиска, установленную по умолчанию, на пользовательскую.
- -e (—existing) — поиск файлов, существующих на момент запуска команды.
- -L (—follow) — при применении —existing заставляет команду использовать символические ссылки вместо жёстких. Опция —follow включена по умолчанию.
- -h (—help) — выводит справку.
- -i (—ignore-case) — делает команду нечувствительной к регистру.
- -p (—ignore-spaces) — заставляет команду игнорировать пробелы и знаки пунктуации.
- -t (—transliterate) — игнорирует диакритические знаки.
- -l, -n (—limit) — ограничивает количество файлов в выводе команды.
- -P (—nofollow) — заставляет команду использовать жёсткие ссылки вместо символических.
- -0 (—null) — включает использование NUL в качестве разделителя строк.
- -S (—statistics) — выводит статистику по каждой базе данных вместо поиска файлов.
- -q (—quiet) — запрещает команде выводить сообщения об ошибках до завершения поиска.
- -r (—regexp) — поиск с использованием регулярных выражений.
- -V (—version) — показывает версию установленной в системе утилиты locate.
- -w (—wholename) — выводит файл, если в его названии либо адресе есть символы, соответствующие шаблону.
Примеры использования locate
Если нужно найти файлы, соответствующие сразу нескольким шаблонам, используется опция -A. Шаблоны разделяются пробелом:
locate -A zima 64
Опция -w включена по умолчанию, поэтому locate проверяет на соответствие шаблону не только имена файлов, но и названия папок, в которых эти файлы расположены. Например, если Документ1.ods находится по адресу Компьютер/БухалтерияДоки/ВсеДокументы/, он будет выведен командой при использовании шаблонов «Док», «Бух» и «Все». Для того, чтобы в результатах отображались только файлы с именами, в которых присутствует шаблон, применяется опция -b.
На скриншоте видно, как команда обрабатывает запросы с каждой из упомянутых опций.
Команда locate чувствительна к регистру. Если, к примеру, шаблон имеет вид «GrEEn», файлы с именами green и GREEN в процессе поиска будут игнорироваться. Для того, чтобы найти все документы, независимо от наличия строчных и заглавных букв в их названиях, используется опция -i.
Порой в названиях файлов встречаются буквы с диакритическими знаками (умлаутами, акутами, тремами и прочими). Эти документы не будут найдены, если в команде используется шаблон, состоящий из обычных букв. И наоборот, если в шаблоне есть буквы с диакритическими знаками, команда проигнорирует файлы, в названиях которых отсутствуют аналогичные символы. «Стереть» разницу между буквами с диакритическими знаками и без них можно при помощи опции -t.
По умолчанию команда locate осуществляет поиск в собственной базе данных mlocate.db, однако, умеет работать и с пользовательскими БД. Для этого предусмотрена следующая опция: —database.
locate —database main-user-tor-database1.db bin/raw
Можно одновременно осуществлять поиск в нескольких базах данных, при этом названия файлов этих баз нужно разделять двоеточием:
locate —database main-user-tor-database1.db:main-user-tor-database2.db bin/raw
Результаты будут выведены отдельно для каждой базы данных, в той же очерёдности, с которой базы данных были перечислены в запросе.
Файлы, добавленные в систему до обновления стандартной базы данных, не обнаруживаются командой locate. Также в результатах могут появляться уже несуществующие (удалённые) документы. Для того, чтобы актуализировать выдачу, используется опция -e.
Глядя на скриншот, легко сравнить результаты поиска с опцией -е и без неё.
Кроме того, можно обновить базу данных вручную, выполнив в терминале команду:
Выводы
Команда locate linux позволяет быстро и легко найти файлы, затерявшиеся в недрах системы. Если какие-то аспекты её работы остались для вас непонятными, задавайте вопросы в комментариях.