В Linux у вас есть несколько инструментов, которые помогут вам найти путь к файлам и каталогам в вашей системе.
В этой статье познакомимся с этими инструментами, от базовых до продвинутых, включая их плюсы и минусы, которые помогут вам легко различать их и решать, какой из них подходит для определенной ситуации.
Команда which: поиск исполняемого файла приложения на основе переменой PATH
Команда which — это базовый инструмент для поиска абсолютного пути к
исполняемым командам или инструментам, которые можно выполнить с вашего
терминала.
Например, если вы хотите найти абсолютный путь к команде ls, укажите его в команде which.
which ls
Как можно видеть, в выводе команды отображается путь к исполняемому файлу ls: /usr/bin. Так же команда отображает установленные alias для этой команды. Это очень полезная функция, так как можно быстро проверить, не назначил ли какая-нибудь зловредина другой alias для этой команды. Что может привести к неожиданным результатам.
В некоторых случаях один и тот же бинарник может находиться в
нескольких местах. Чтобы отобразить все пути к исполняемому файлу, используется флаг «-a».
which -a ls
Плюсы:
- Полезно для поиска абсолютного пути к исполняемым файлам или инструментам, которые можно запустить с вашего терминала.
- Поиск пути к двоичным файлам или инструментам, которые существуют в нескольких различных местах.
- Потребляет мало памяти
Минусы:
- Поиск ограничен только исполняемыми файлами и инструментами.
Когда стоит использовать команду which.
Лично я предпочитаю использовать команду «which» только тогда, когда
хочу найти абсолютный путь к исполняемым командам или инструментам,
которые можно выполнить из терминала. Эта команда осуществляет поиск только по исполняемым командам в терминале, что делает такой поиск очень быстрым.
Команда whereis: поиск двоичных файлов, исходных файлов и man файлов.
Команда whereis идентична команде which, за исключением того, что она
также предоставляет вам расположение двоичного файла, исходного кода и
страницы руководства.
Например, чтобы найти абсолютный путь к двоичному файлу, исходному коду и странице руководства для команды ls, используйте следующую команду:
whereis ls
Следующая команда выведет на экран только исполняемый или двоичный файл для указанной команды.
whereis -b ls
Для поиска исходного файла, используйте следующую команду:
whereis -s ls
А для того, чтобы распечатать только файлы страниц руководства, используйте следующую команду
whereis -m ls
Плюсы:
- Полезно для поиска двоичных, исходных файлов и файлов страниц руководства для необходимой команды.
- Высокая скорость поиска, как и у команды which
- Вы можете легко найти файлы с несколькими страницами руководства.
- Есть флаг для поиска в определенном каталоге, который не указан в переменной PATH.
Минусы:
- Не поддерживает поиск файлов, путь к которым не указан в переменной PATH.
- Ограничен определенными поисковыми запросами
Когда стоит использовать команду whereis.
whereis это одна из тех команд, которые я не использую часто, Тем не менее, это удобный инструмент, который можно использовать при необходимости.
Команда locate: быстрый поиск по именам файлов
Команда locate полностью отличается от двух предыдущих команд: она ищет
указанные файлы или папки в индексах файла базы данных, известного как
updateb.
Команда будет осуществлять поиск с очень быстрой скоростью, поскольку в базе
данных уже есть все записи. Но есть нюанс, база данных updateb обновляется только раз в 24 часа с помощью cron.
Если вы создали или удалили какой-либо файл между этим периодом времени, вы можете не найти эти файлы. Или наоборот файл может по-прежнему отображаться в результатах поиска (этого можно избежать, используя флаги), пока база данных не будет обновлена автоматически или вручную.
Использование locate интуитивно понятно. Просто нужно вызвать эту
команду и передать ей имя файла в качестве аргумента, чтобы найти файл в
дисковом хранилище.
locate nginx
Чтобы выяснить общее количество совпадений имен файлов в соответствии с запросом, используется следующая команда:
locate -c nginx
Плюсы:
- Поиск всех файлов и каталогов с очень большой скоростью (которые проиндексированы в базе данных).
- Поддержка точного сопоставления имен файлов без учета регистра, расширений и типа.
- Небольшое потребление оперативной памяти
Минусы:
- Устаревшие базы данных могут дать неверные результаты.
- Нет поддержки поиска файлов по дате их изменения, дате создания, времени доступа и т. д.
Когда стоит использовать команду locate.
Этот инструмент очень полезен, особенно если у вас не самый мощный компьютер. locate будет искать указанные вами файлы или каталоги с невероятной скоростью, не потребляя слишком много системной памяти. Однако, если вы выполняете много работы по созданию и удалению файлов, вам придется обновлять базу данных каждый раз, перед тем, как осуществлять поиск.
Команда find: Рекурсивный поиск файлов в указанном каталоге
Команда find — это продвинутый инструмент, который немного сложен для
новичков, но он может помочь вам найти любые файлы или
каталоги в вашей системе, просматривая каждый файл или каталог
при поиске.
Обратите внимание, что он не использует какие-либо базы данных для
поиска индексов, а вместо этого при каждом поиске просматривает все
файлы и каталоги вашей файловой системы, потребляя больше системной
памяти.
Если вы хотите найти определенные файлы в вашем домашнем каталоге, вы можете использовать следующую команду.
find /home/user/ -name file.txt
Если вы хотите найти определенный каталог, вы можете использовать следующую команду.
find /home/user/ -name Загрузки
Обратите внимание: если существует файл с тем же именем, как и у каталога каталога, он также появится в результате. Чтобы не включать такие файлы в результат поиска, укажите тип файла, используя флаг «-type».
find -type d -name Загрузки
Плюсы:
- Инструмент поиска, который может рекурсивно искать указанный файл или каталог в дереве файловой системы.
- Поддержка нескольких типов поиска, по дате изменения, дате создания, типе доступа, размеру, разрешения и многое другое.
- Имеется все, что должно быть, в одном поисковом инструменте
Минусы:
- Потребляет больше оперативной памяти, чем рассмотренные инструменты ранее
Когда стоит использовать команду find.
Чаще всего я использую команду find из-за возможностей, которые она предоставляет. Это очень полезный инструмент, и я рекомендую всем, потратить немного времени, чтобы иметь хотя бы базовое представление об этом инструменте.
Заключение
На этом пока все. В этой статье рассмотрели основные инстреументы для поиска файлов в системе, используя командную строку терминала. Надеюсь было полезно. Так же интересно было бы выслушать мнение, какой инструмент поиска используете вы и почему.
P.S.Если вам интересен материал не забывайте ставить палец вверх под
статьей. А так же, подписывайтесь на анонсы новых статей в телеграмм и на сайте RoadIT