Locate in folder linux

How to locate a file in a directory

How can I locate a file using locate in CentOS under a specific directory from terminal? Locate search the whole database!

2 Answers 2

locate does not seem to have an option to do this, but you can still search specific directories using one of the following:

  • Use wildcards in your search. Example: locate ‘*/directory/*filename*’
  • Use grep with locate . Example: locate filename | grep /directory/
  • Use the find command. Example: find /my/directory/ -name filename . You can also restrict your search to directories or files by appending -type d or -type f . To find a file named ‘myScript’ in your home folder you could do this: find ~/ -name myScript -type f . This will search for a file (not directories) named exactly ‘myScript’ inside your home folder.

There is no option for that functionality in the output from man locate on CentOS 6.5, at least. But, you could get pseudo-functionality by changing a search term. For example, locate cron might produce too much output, but locate ‘/var/log/cron’ would limit the results to those items in the locate database that match the search terms. Or, a pipe would work: locate cron | grep ‘/var/log/’ Otherwise, use find: find /path/to/search -name ‘*cron*’ or similar.

You must log in to answer this question.

Linked

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

Читайте также:  Trash can on linux

Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.13.43531

Linux is a registered trademark of Linus Torvalds. UNIX is a registered trademark of The Open Group.
This site is not affiliated with Linus Torvalds or The Open Group in any way.

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

Команда 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) — выводит файл, если в его названии либо адресе есть символы, соответствующие шаблону.
Читайте также:  Linux check gpu load

Примеры использования locate

Если нужно найти файлы, соответствующие сразу нескольким шаблонам, используется опция -A. Шаблоны разделяются пробелом:

Опция -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

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

Читайте также:  Ram command in linux

Файлы, добавленные в систему до обновления стандартной базы данных, не обнаруживаются командой locate. Также в результатах могут появляться уже несуществующие (удалённые) документы. Для того, чтобы актуализировать выдачу, используется опция -e.

Глядя на скриншот, легко сравнить результаты поиска с опцией и без неё.

Кроме того, можно обновить базу данных вручную, выполнив в терминале команду:

Выводы

Команда locate linux позволяет быстро и легко найти файлы, затерявшиеся в недрах системы. Если какие-то аспекты её работы остались для вас непонятными, задавайте вопросы в комментариях.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

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