Use locate in linux

Содержание
  1. The locate Command
  2. 15 полезных практических примеров команды locate в Linux
  3. 1. Использование команды locate
  4. 2. Ограничение количества показываемых результатов
  5. 3. Показ числа найденных файлов
  6. 4. Поиск locate без учёта регистра
  7. 5. Обновление базы данных mlocate
  8. 6. Отображение только файлов, существующих в файловой системе
  9. 7. Вывод записей без символа «новая строка»
  10. 8. Обзор вашей локальной базы данных Locate
  11. 9. Подавление сообщений об ошибках
  12. 10. Выбор другого расположения mlocate
  13. 11. Поиск файлов с locate по всем пользователям
  14. 12. Поиск по нескольким именам файлов
  15. 13. Поиск по нескольким образцам, встречающимся в одном имени файла
  16. 14. Игнорирование пути до файла при поиске
  17. 15. Поиск locate по регулярным выражениям
  18. Команда locate в Linux
  19. Установка locate (команда locate не найдена)
  20. Установите locate на Ubuntu и Debian
  21. Установить locate на CentOS и Fedora
  22. Как locate работу
  23. Как использовать команду locate
  24. Выводы

The locate Command

The locate command is often the simplest and quickest way to find the locations of files and directories on Linux and other Unix-like operating systems.

The basic syntax for locate is:

When used without any options, locate displays every absolute pathname for which the user has access permission that contains any of the names of files and/or directories that are provided to it as arguments (i.e., input data).

The absolute pathname, also referred to as the absolute path or the full path, is the hierarchy of directories from the root directory to the designated file or directory. The root directory is the directory at the very top of the filesystem (i.e., hierarchy of files) that contains all other directories and files on the system and which is designated by a forward slash ( / ). It is important that the absolute pathname is returned both because it tells the exact locations on the system and because it makes it possible to indicate the locations of files or directories that have the same name but different absolute paths.

Thus, for example, the following would list the absolute paths of all files named file1 and all directories named dir1 for which the user had access permission:

It would also list any other absolute pathnames that contained these strings (i.e., sequences of characters), for example /home/john/file123 or /usr/local/mydir1/index.html.

The specificity of locate can be increased by using it together with wildcards or other regular expressions. Wildcards are characters that can be used to substitute for any other character or characters. For example, the star character ( * ) is a wildcard that can represent any single character or any string containing any number of characters. Regular expressions are a string that describes or matches a set of strings, according to certain syntax rules. For example, the following command uses the star wildcard to display all files on the system that have the .png filename extension:

The -q option is used to suppress error messages, such as those that might be returned in the event that the user does not have permission to access designated files or directories. Thus, the following would suppress any error messages in the above example:

It is often the case that a large number of results will be returned for any query. The -n option followed by an integer limits the results to a specific number. For example, the following command would display only 15 results in a search for files that have an .html extension:

An alternative is to use a pipe (represented by the vertical bar character) to redirect the output of locate from the display screen to a pager such as more or less, which presents only one screenful of output at a time, for example,

The -i option performs a case-insensitive search. That is, it will return any results that match the arguments regardless of whether individual letters are lower case or upper case. For example, the following would return all files with the extension .html, .HTML, or some combination thereof:

Читайте также:  A1347 mac mini установка windows

On some systems, such as Red Hat, the program slocate is installed by default instead of locate, and entering the locate command activates a script (i.e., a short program) that causes slocate to be launched. slocate provides a secure way to index and quickly search for files on a system by storing file permissions and ownership data so that users will not see files for which they do not have access.

The -V option can be used to show which version of locate is used, including whether it is locate or slocate. Another way to determine whether slocate is being used is to see if an absolute pathname such as /usr/bin/slocate is returned when the following command is issued:

locate and slocate actually search a built-in database, named locate.db or slocate.db, respectively, rather than the entire hard disk drive itself, in order to provide a much shorter searching time. This database is automatically updated on a regular basis by cron, a small program that runs in the background, performing various tasks at regularly scheduled intervals. The updating is performed each night if the computer is on continuously.

Because the database is not updated immediately, recently created files and directories might not show up when searching for them with locate or slocate. Fortunately, however, it is a simple matter to update the database manually, although it might take a few minutes. Manual updating can be accomplished by logging in as the root user (i.e., administrative user), such as by using the su (i.e., substitute user) command, and then issuing the following command:

The same thing can be accomplished by the root user by using locate with its -u (i.e., update) option, i.e.,

For the curious, the database is located at /var/lib/slocate/slocate.db on some systems, such as Red Hat. Its exact location on any particular system can be found by the root user (because ordinary users will not have access permission on most systems) with the locate command as follows:

The database is a binary file (i.e., a non-text file). However, for the really curious user who has root permission, the human-readable portion of its contents can be viewed by first using the strings command to extract all the plain text and by then piping the output to less for displaying one screenful at a time as follows:

strings /var/lib/slocate/slocate.db | less

If it is desired to perform a more sophisticated search, including searching by attributes other than name (e.g., by size, creation date or location), the find command should be used.

Created February 2, 2006.
Copyright © 2006 The Linux Information Project. All Rights Reserved.

Источник

15 полезных практических примеров команды locate в Linux

Новичкам в операционной системе Linux бывает непросто сориентироваться в файловой системе, быстро найти нужный файл. Между прочим, командная строка Linux предоставляет отличные инструменты, которые позволят быстро найти нужные файлы. Двумя самыми распространёнными утилитами являются find и locate.

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

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

1. Использование команды locate

Простейшим случаем использования команды locate является указание имени файла (или части имени) файла, который вы хотите найти:

2. Ограничение количества показываемых результатов

Опцией -n вы можете ограничить количество возвращаемых результатов, чтобы избежать избыточного вывода:

Например, вы хотите для вашего запроса вывод только 20 результатов, вы можете набрать следующую команду:

Результатом станет вывод первых 20 файлов, которые оканчиваются на .html.

3. Показ числа найденных файлов

Если вы хотите отобразить количество всех найденных по вашему запросу файлов, то используйте ключ -c:

4. Поиск locate без учёта регистра

По умолчанию locate настроена быть чувствительной к регистру при обработке запросов, это означает, что TEXT.TXT даст вам другие результаты чем дал бы запрос text.txt.

Читайте также:  Re loader activator windows 10 что это

Чтобы команда locate не обращала внимание на регистр букв и выводила результаты независимо от заглавных или маленьких букв, используйте опцию -i:

5. Обновление базы данных mlocate

Поскольку команда locate полагается на базу данных, называемую mlocate, эту базу данных нужно регулярно обновлять, чтобы утилита работала должным образом. На самом деле, система сама в фоне время от времени запускает этот процесс обновления, если вы хотите запустить процесс обновления базы данных прямо сейчас, то выполните команду (для неё требуются привилегии суперпользователя):

6. Отображение только файлов, существующих в файловой системе

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

7. Вывод записей без символа «новая строка»

Команда locate в качестве разделителя результатов поиска использует символ «новая строка» (\\n). Но если вы предпочитаете использовать другой разделитель, такой как ASCII NUL, вы можете сделать это используя опцию -0.

8. Обзор вашей локальной базы данных Locate

Если вы хотите узнать статус и некоторую статистику по вашей базе данных mlocate.db, то используйте опцию -S:

9. Подавление сообщений об ошибках

Иногда доступ к базе данных mlocate.db выводит сообщения об ошибках, говорящих, что вы обычный пользователь и у вас нет прав для доступа к некоторым данным. Чтобы полностью убрать эти сообщения используйте опцию -q:

10. Выбор другого расположения mlocate

Если вы хотите сделать запрос не к базе данных mlocate по умолчанию, а к другой mlocate.db размещённой в системе где-то в другом месте, вы можете указать locate на иное расположение базы данных mlocate с помощью опции -d:

11. Поиск файлов с locate по всем пользователям

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

12. Поиск по нескольким именам файлов

Программа locate умеет искать сразу по нескольким именам файлов, для этого достаточно одновременно указать имена или их части:

13. Поиск по нескольким образцам, встречающимся в одном имени файла

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

14. Игнорирование пути до файла при поиске

Вы, наверное, уже обратили внимание, что locate считает файл подходящим и показывает его в поиске, если искомая строка встречается не только в названии файла, но и в пути (в названии директорий, в которых размещён этот файл). Если вы хотите сделать поиск только по имени файла без поиска по путям, то используйте опцию -b:

15. Поиск locate по регулярным выражениям

Команда locate по умолчанию использует поиск по паттернам (образцам). Если вы хотите сделать поиск по регулярным выражениям, то для этого имеется две опции:

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

В рассмотренном выше примере сделан поиск только по базовому имени файла, причём, ищутся файлы, начинающиеся с любого сочетания маленьких букв и точки, длиной от 1 до 3 символов, далее должны идти три символа, составленные из двух символов tx в любом сочетании.

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

Источник

Команда locate в Linux

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

Читайте также:  Skype 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

Установить locate на CentOS и Fedora

Как locate работу

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

Во время установки пакета mlocate создается задание cron, которое запускает команду updatedb каждые 24 часа. Это гарантирует регулярное обновление базы данных. Для получения дополнительной информации о задании cron проверьте файл /etc/cron.daily/mlocate .

Базу данных можно обновить вручную, запустив updatedb от имени пользователя root или пользователя с привилегиями sudo:

Процесс обновления займет некоторое время, в зависимости от количества файлов и каталогов, а также скорости вашей системы.

Файлы, созданные после обновления базы данных, не будут отображаться в результатах поиска.

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

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

Синтаксис команды locate следующий:

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

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

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

Файл /root/.bashrc не будет показан, потому что мы /root/.bashrc команду как обычный пользователь, у которого нет прав доступа к каталогу /root .

Если список результатов длинный, для лучшей читаемости вы можете направить вывод в команду less :

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

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

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

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

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

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

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

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

Выводы

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

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

Если у вас есть вопросы, не стесняйтесь оставлять комментарии.

Источник

Оцените статью