Во время работы с операционными системами GNU/Linux часто приходится сталкиваться с вопросом поиска. Иногда к этим задачам относятся не только поиск определенного файла, но и поиск файлов определенного расширения или с определенной датой создания и много других характеристик. В предыдущих уроках мы с вами научились навигации и файловым операциям в терминале linux. Сегодня мы с вами разберем команды, узнаем что такое поиск файлов в GNU/Linux.
Поиск файлов
find
Первая команда с которой мы ознакомимся, это команда «find«. Позволяет выполнять поиск файлов в каталогах. Синтаксис команды очень просто и имеет вид:
find путь -опции
Эта команда имеет очень мощный функционал и позволяет осуществлять очень гибкий поиск файлов. В путь мы указываем путь к каталогу в котором будем искать файлы и после этого указываем опции:
-name — поиск файла согласно шаблону
-user — поиск файлов определенного пользователя
-type — поиск по типу файла
-mtime — поиск по времени создания или модификации
Теперь рассмотрим пару примеров использования команды find.
find ~ -type f -size +100M
Этой командой мы выполним поиск всех файлов в домашнем каталоге пользователя размером больше 100 мегабайт. Опция -type f указывает, что искать мы будем файлы, опция -size +100M указывает, что искать файлы размер которых больше 100 мегабайт.
find ~ -type f -mtime +300
Теперь мы ищем файлы которые были изменены или созданы более 30ти дней назад. Опция —mtime +30 указывает нам а то, что нужно искать файлы старше 30ти дней.
Также есть опция которая указывает глубину поиска в каталогах -maxdepth. Так как команда find ищет только в том каталоге в котором вы указали. С помощью переменно -maxdepth можно задать глубину поиска в подкаталогах.
locate
locate не имеет такого сильного функционала как find, однако обладает другими преимуществами. Если вам нужно очень быстро найти файл, то используя команду locate вы это сделаете в разы быстрее чем при помощи команды find. Дело в том, что locate использует специальную базу и поиск производится не по файловой системе, а по базе. Для начала работы c командой locate вам нужно обновить базу данных, делается это командой updatedb. Выполнять нужно от имени суперпользователя. Также базу нужно периодически обновлять, так как в неё не будут добавлены файлы, которые были созданы после момента последнего выполнения обновления базы.
Пару примеров использования locate
- locate file — поиск файла с именем file
- locate .txt — найти все файлы с расширением txt
- locate file -i — регистр файлов учитывает поэтому, чтобы снять это ограничение, вводим опцию -i
- locate file -c — вывод количества найденных файлов
- locate file -n 5 — ограничение вывода в 5 результатов
Довольно простой синтаксис и очень быстрый поиск. Только не забывайте использовать updatedb.
whereis
Не совсем поиск файлов, однако тоже полезная команда. Позволяет найти бинарные файлы, исходники и страницы документации программы установленной в системе. Синтаксис очень простой: whereis имя_программы.
При помощи этих 3х команд вы сможете эффективно и быстро искать файлы в вашей системе. Запомните основные опции(ключи) и приемы работы с командами, таким образом ваша работа станет еще эффективней