Использование команд find, locate, which и whereis для поиска файлов в Linux

Bg1

Существует несколько способов найти и локализовать файлы из терминала в Linux, и find, locate, which и whereis — это некоторые из наиболее часто используемых команд для этого. Давайте рассмотрим эти четыре команды поиска, их сходства и различия.

1. find

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

Следующий скриншот показывает, как в текущем каталоге (.) выполняется поиск всех имен файлов, заканчивающихся на .txt.

Сравнить Find

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

2. locate

Эта команда — еще один способ найти файлы по имени. Предыдущая команда ищет в указанном каталоге, а затем предоставляет результаты пользователю. Этот инструмент выполняет поиск по базе данных, называемой “mlocate.db”, которая находится в “ /var/lib/mlocate/mlocate.db”. Эта база данных обновляется каждое утро с помощью утилиты cron.

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

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

Предположим, что в домашнем каталоге был создан скрипт.

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

locate myscript

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

sudoupdatedb

Если мы попытаемся “найти” пользовательский скрипт, он сможет найти файл.

3. which

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

Один исполняемый файл/скрипт/бинарный файл может находиться в нескольких местах в системе. which ищет в каталогах, указанных в переменных окружения $PATH и $MANPATH, наличие указанного исполняемого файла.

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

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

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

4. whereis

whereis — это еще одна команда, которая используется для получения трех частей информации о исполняемом файле:

  • абсолютный путь бинарного файла
  • абсолютный путь, где находится исходный код этого бинарного файла в системе
  • абсолютный путь к руководству, которое существует для этого бинарного файла

Для “bzgrep” бинарный файл находится в “/bin”, а руководство находится в “/usr/share/man/man1”. Его исходный код не существует в системе.

whereis можно настроить на поиск только абсолютного пути бинарного файла с помощью переключателя -b. Поиск может быть выполнен только в каталогах, перечисленных после переключателя -B. Имена после -f указывают все бинарные файлы, для которых необходимо получить информацию.

Аналогично, поиск можно ограничить только исходным кодом или только руководствами, используя переключатели -s и -m. -S и -M, за которыми следуют имена каталогов, указывают каталоги для поиска исходного кода и руководств соответственно.

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

Сравнить список Which

Заключение

Не существует недостатка в инструментах для поиска и локализации файлов в терминале. Я надеюсь, что теперь у вас есть хорошее представление о четырех полезных инструментах поиска в системах Linux. Если вам нужны более подробные сведения об их использовании, вы можете ознакомиться с их страницами руководства для получения подробной документации.