Найти в Дзене

Различные способы поиска файлов и каталогов в Linux

В Linux у вас есть несколько инструментов, которые помогут вам найти путь к файлам и каталогам в вашей системе. В этой статье познакомимся с этими инструментами, от базовых до продвинутых, включая их плюсы и минусы, которые помогут вам легко различать их и решать, какой из них подходит для определенной ситуации. Команда which — это базовый инструмент для поиска абсолютного пути к
исполняемым командам или инструментам, которые можно выполнить с вашего
терминала. Например, если вы хотите найти абсолютный путь к команде ls, укажите его в команде which. which ls Как можно видеть, в выводе команды отображается путь к исполняемому файлу ls: /usr/bin. Так же команда отображает установленные alias для этой команды. Это очень полезная функция, так как можно быстро проверить, не назначил ли какая-нибудь зловредина другой alias для этой команды. Что может привести к неожиданным результатам. В некоторых случаях один и тот же бинарник может находиться в
нескольких местах. Чтобы отобразить все
Оглавление

В Linux у вас есть несколько инструментов, которые помогут вам найти путь к файлам и каталогам в вашей системе.

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

Команда which: поиск исполняемого файла приложения на основе переменой PATH

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

Например, если вы хотите найти абсолютный путь к команде ls, укажите его в команде which.

which ls
-2

Как можно видеть, в выводе команды отображается путь к исполняемому файлу ls: /usr/bin. Так же команда отображает установленные alias для этой команды. Это очень полезная функция, так как можно быстро проверить, не назначил ли какая-нибудь зловредина другой alias для этой команды. Что может привести к неожиданным результатам.

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

which -a ls

Плюсы:

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

Минусы:

  • Поиск ограничен только исполняемыми файлами и инструментами.

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

Лично я предпочитаю использовать команду «which» только тогда, когда
хочу найти абсолютный путь к исполняемым командам или инструментам,
которые можно выполнить из терминала. Эта команда осуществляет поиск только по исполняемым командам в терминале, что делает такой поиск очень быстрым.

Команда whereis: поиск двоичных файлов, исходных файлов и man файлов.

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

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

whereis ls
-3

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

whereis -b ls
-4

Для поиска исходного файла, используйте следующую команду:

whereis -s ls
-5

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

whereis -m ls
-6

Плюсы:

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

Минусы:

  • Не поддерживает поиск файлов, путь к которым не указан в переменной PATH.
  • Ограничен определенными поисковыми запросами

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

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

Команда locate: быстрый поиск по именам файлов

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

Команда будет осуществлять поиск с очень быстрой скоростью, поскольку в базе
данных уже есть все записи. Но есть нюанс, база данных updateb обновляется только раз в 24 часа с помощью cron.

Если вы создали или удалили какой-либо файл между этим периодом времени, вы можете не найти эти файлы. Или наоборот файл может по-прежнему отображаться в результатах поиска (этого можно избежать, используя флаги), пока база данных не будет обновлена ​​автоматически или вручную.

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

locate nginx
-7

Чтобы выяснить общее количество совпадений имен файлов в соответствии с запросом, используется следующая команда:

locate -c nginx
-8

Плюсы:

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

Минусы:

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

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

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

Команда find: Рекурсивный поиск файлов в указанном каталоге

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

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

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

find /home/user/ -name file.txt
-9

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

find /home/user/ -name Загрузки
-10

Обратите внимание: если существует файл с тем же именем, как и у каталога каталога, он также появится в результате. Чтобы не включать такие файлы в результат поиска, укажите тип файла, используя флаг «-type».

find -type d -name Загрузки

Плюсы:

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

Минусы:

  • Потребляет больше оперативной памяти, чем рассмотренные инструменты ранее

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

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

Заключение

На этом пока все. В этой статье рассмотрели основные инстреументы для поиска файлов в системе, используя командную строку терминала. Надеюсь было полезно. Так же интересно было бы выслушать мнение, какой инструмент поиска используете вы и почему.

P.S.Если вам интересен материал не забывайте ставить палец вверх под
статьей. А так же, подписывайтесь на анонсы новых статей в
телеграмм и на сайте RoadIT