Команда 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. Шаблоны разделяются пробелом:

Minecraft. Обзор команды /locate.

locate -A zima 64

Опция -w включена по умолчанию, поэтому locate проверяет на соответствие шаблону не только имена файлов, но и названия папок, в которых эти файлы расположены. Например, если Документ1.ods находится по адресу Компьютер/БухалтерияДоки/ВсеДокументы/, он будет выведен командой при использовании шаблонов «Док», «Бух» и «Все». Для того, чтобы в результатах отображались только файлы с именами, в которых присутствует шаблон, применяется опция -b.

На скриншоте видно, как команда обрабатывает запросы с каждой из упомянутых опций.

Обновление 1.18.2 — команда /locate | Гайд по команде /locate | Команды Майнкрафт

Команда 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 позволяет быстро и легко найти файлы, затерявшиеся в недрах системы. Если какие-то аспекты её работы остались для вас непонятными, задавайте вопросы в комментариях.

Источник: losst.pro

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

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

Читайте также:  Все программы для minecraft pe

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

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

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

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

locate createProgXML /home/mial/all/createProgXML.sh /home/mial/all/createProgXMLfix.php

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

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

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

locate «*.html» -n 20 /home/mial/.config/chromium/Default/Extensions/nmmhkkegccagdldgiimedpiccmgmieda/1.0.0.1_0/html/craw_window.html /home/mial/.config/chromium/Default/Extensions/nmmhkkegccagdldgiimedpiccmgmieda/1.0.0.2_0/html/craw_window.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/_footer.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/benchmark/templates/_header.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc/users-guide.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_class_index.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_file_index.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/fr_method_index.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/index.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ActionView.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ERB.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Kernel.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayBufferEnhancer.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayBufferEruby.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayEnhancer.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/ArrayEruby.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/Basic.html /home/mial/.gem/ruby/2.4.0/gems/erubis-2.7.0/doc-api/classes/Erubis/BiPatternEnhancer.html

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

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

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

locate -c «.zip» 233

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

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

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

locate -i *text.txt* /home/mial/TEXT.TXT /usr/share/otori/data/helptext.txt

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

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

sudo updatedb

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

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

rm TEXT.TXT locate -i -e *text.txt* /usr/share/otori/data/helptext.txt

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

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

locate -i -0 *text.txt* /home/mial/TEXT.TXT/usr/share/otori/data/helptext.txt

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

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

locate -S База данных /var/lib/mlocate/mlocate.db: »69 670 папок »725 443 файла »46 165 671 байт в названии файла база данных заняла »18 093 242 байта

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

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

locate -q «*.dat»

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

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

locate -d

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

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

sudo locate -i *text.txt* /root/root_text.txt /usr/share/otori/data/helptext.txt

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

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

Читайте также:  Как сделать электронный забор в Майнкрафте

locate text txt

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

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

locate -A text txt

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

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

locate -b zip

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

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

-r, —regexp REGEXP поиск по базовым регулярным выражениям вместо паттернов —regex образцы – это расширенные регулярные выражения

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

locate -b —regex «^[a-z.][tx]$» /home/mial/t.txt /opt/wine64/drive_c/Python27/Lib/test/cjkencodings/hz.txt /usr/lib/go/src/compress/testdata/e.txt /usr/lib/go/src/compress/testdata/pi.txt /usr/lib/modules/4.10.11-1-ARCH/build/include/config/blk/dev/3w/xxxx /usr/lib/node_modules/bluebox-ng/node_modules/require-dir/test/duplicates/c.txt /usr/lib/node_modules/bluebox-ng/node_modules/require-dir/test/simple/d.txt /usr/lib/python2.7/test/cjkencodings/hz.txt /usr/lib/python3.5/site-packages/pbr/tests/testpackage/data_files/a.txt /usr/lib/python3.5/site-packages/pbr/tests/testpackage/data_files/b.txt /usr/lib/python3.6/test/cjkencodings/hz.txt /usr/share/davtest/tests/pl.txt /usr/share/iptv/languages/it.txt /usr/share/pasv-agrsv/notes/db.txt /usr/share/snoopy-ng/setup/sn.txt /usr/share/uniscan/c.txt

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

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

Связанные статьи:

  • Какие есть полезные инструменты с интерфейсом командной строки для системных администраторов Linux (47.4%)
  • Руководство по использованию GNU Parallel (47.4%)
  • Как найти все файлы, содержащие определённый текст (на Linux) (44.7%)
  • Как найти имена файлов, чья длина превышает определённое значение (44.7%)
  • Как отсортировать в алфавитном порядке в Writer (LibreOffice) (41.7%)
  • Как обработать каждую строку, полученную от команды grep (RANDOM — 8.4%)

Источник: zalinux.ru

Как работает locate в майнкрафт

Библиотека сайта rus-linux.net

В данной статье мы будем обсуждать методику использования команды locate, рассматривая простые для понимания примеры. Помните о том, что все инструкции и примеры, приведенные в данной статье, были протестированы в системе Ubuntu 16.04 LTS с утилитой locate версии 0.26.

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

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

$ locate [имя-файла]

Например, если вам нужно найти все файлы в именах которых содержится строка «dir2» , вы можете использовать locate следующим образом:

Примечание: команда locate dir2 (без звездочек) также вполне применима, ведь locate автоматически заменяет переданное имя файла (такое, как NAME ), на соответствующий шаблон (в данном случае, *NAME* ).

2. Принцип работы locate или почему поиск осуществляется так быстро

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

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

Например, если я попытаюсь найти файлы с именами, содержащими строку tosearch в директории Downloads , утилита find сгенерирует следующий вывод:

Но при поиске файлов с теми же именами с помощью утилиты locate не будет выведено каких-либо результатов:

Это означает, что информация в базе данных locate не была обновлена после создания интересующего меня файла. Ну что же, давайте обновим информацию в базе данных с помощью команды updatedb . Это делается следующим образом:

Читайте также:  Как сделать в Майнкрафте рейсы

$ sudo updatedb

Теперь при исполнении приведенной выше команды locate выводится информация о найденных файлах:

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

3. Вывод информации о количестве найденных файлов и директорий

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

4. Вывод информации лишь о существующих в данный момент файлах

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

Например, рассмотрим следующую ситуацию: я умышленно удалил файл filetosearch.txt с диска. Этот факт был подтвержден утилитой find, которая не смогла найти его:

Но в случае осуществления аналогичной операции поиска с помощью утилиты locate информация о файле все еще выводилась:

И мы без труда можем догадаться, почему это происходит — база данных locate не была обновлена после удаления файла. Однако, в случае использования параметра -e проблема будет решена:

На странице руководства locate данный параметр описан следующим образом: «Выводить информацию лишь о тех файлах, которые существуют в момент запуска утилиты».

5. Игнорирование регистра символов

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

Например, в моей системе имеются два файла с именами newfiletosearch.txt и NEWILETOSEARCH.txt . Очевидно, что имена файлов отличаются лишь регистром символов. Если вы используете утилиту locate для поиска файлов по шаблону *tosearch* , она выведет лишь вариант имени файла в нижнем регистре:

Но в случае использования параметра -i утилита будет игнорировать регистр символов имен файлов, поэтому оба имени появятся в выводе:

6. Использование символа ASCII NUL для разделения имен файлов

По умолчанию имена файлов, выводимые утилитой locate, разделяются с помощью символа перехода на новую строку ( n ). Но при необходимости вы можете изменить этот символ, а точнее, использовать вместо него символ ASCII NUL . Для этой цели предназначен параметр -0 .

Например, я могу выполнить команду из предыдущего раздела, добавив в нее параметр -0 :

Несложно заметить, что в выводе больше не используется символ перехода на новую строку — он был заменен на символ ASCII NUL .

7. Вывод информации о базе данных locate

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

8. Поиск файлов с четко заданным именем

По умолчанию при поиске файла с помощью locate переданное имя, такое, как NAME , будет автоматически преобразовываться в в шаблон поиска *NAME* . Например, при поиске файла с именем testfile будут выведены все имена файлов, соответствующие шаблону поиска *testfile* :

Но что делать тогда, когда нужно искать лишь файлы с именем testfile ? Ну, вы этом случае вы можете воспользоваться регулярным выражением, которое активируется с помощью параметра -r . Исходя из этого, вы можете найти все файлы с именами testfile с помощью регулярного выражения аналогичным образом:

$ locate -r /testfile$

Если вы не знакомы с регулярными выражениями, рекомендую обратиться к данному материалу .

Заключение

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

Не стесняйтесь оставлять комментарии при возникновении любых сомнений или вопросов.

Источник: rus-linux.net