Линукс как найти файл по имени
В этой статье поговорим о командах поиска файлов и директорий в терминале, таких как find, locate, whereis, which.
При работе в Linux, довольно часто возникает необходимость поиска файлов с определенными характеристиками. Этими характеристиками могут быть размер или тип файла, время изменения и многое другое.
Формат команды find.
В общем виде команда find выглядит следующим образом:
Путь поиска команды find.
В обычном случае мы просто указываем полный путь к нужному каталогу, например:
Но в качестве пути поиска можно указывать следующие значения:
| . | поиск в текущем каталоге; |
| / | поиск от корневого каталога; |
| поиск в домашнем каталоге. |
Основные опции команды find.
Примеры использования команды find.
Самый простой вариант поиска, указываем путь и имя файла. Давайте найдем файл с именем file1:
Но если мы напишем не полностью имя, например «file», то файл с именем «file1» не найдется. Для этого нужно писать имя в кавычках и в конце добавить *, вот таким образом:
Но теперь нашлись файлы во всех вложенных директориях. А что если нам надо найти файл только в текущей директории или с уровнем вложенности 1 или 2?
Для этого используется опция maxdepth (глубина поиска), то есть, если мы хотим найти файл в директории поиска, без рекурсивного просмотра всех директорий:
Теперь нашлись файлы только в директории поиска.
Если хотим включить первый уровень внутри каталога поиска, тогда нужно указать maxdepth 2:
Как видно на скриншоте, теперь найден файл и в папке «Загрузки».
Нужно указывать опцию -maxdepth перед опцией -name.
Теперь разберем очень важную опцию поиска файла по размеру «-size».
Важно, если мы хотим найти файлы размером в килобайтах, нужно писать в конце k, для мегабайт M, для гигабайт G, для байт b. Важно соблюдать регистр.
Разберем пример, найдем файлы в домашней директории менее 10 килобайт с именем file*:
Нашлись все файлы в домашней директории и ее папках, размер которых менее 10 килобайт.
Теперь давайте найдем файлы в домашней директории, которые весят больше 100 мегабайт:
Нашелся один файл, который весит более 100 мегабайт.
Также можно искать файлы определенного размера, например, которые весят 1G или 1M:
Теперь переходим к поиску файлов, которые были созданы или модифицированы n количество дней назад.
Поиск файлов, которые были изменены или созданы менее 2 дней назад:
Также можно использовать опцию -user, чтобы найти только файлы определенного пользователя:
Возможности команды find поистине безграничны, мы можем использовать и регулярные выражения. К примеру, давайте уберем из поиска все скрытые файлы и директории.
Поиск файлов, которые были изменены или созданы более 100 дней назад:
В одной статье очень трудно перечислить все возможности этой команды поиска файлов и директорий. Это самое основное и часто используемое.
Помимо find для поиска файлов существует ещё команда locate.
Разница между ними в том, что locate использует собственную базу данных для хранения имен файлов. В то время, как find исследует директории в поисках заданного параметром командной строки имени файла.
Команда locate ищет файлы очень быстро, так как она производит поиск не по файловой системе, а по собственной базе данных.
Поэтому, перед использованием данной команды поиска следует использовать команду, которая обновит базу данных индексов файлов в системе:
Хотя это и не обязательно (система это делает периодически), просто если не выполнить её, то вам может вывести в поиске удаленные файлы или не вывести только что созданные.
Формат команды locate.
Вводится команда locate и имя файла, который хотим найти. И, конечно же, опции, которые разберем на примерах.
Примеры использования команды locate.
Но если мы ищем файл с названием «file», то не найдутся файлы с именами в другом регистре: File, FILE и т.д.
Чтобы поиск сделать регистронезависимым, то нужно использовать следующую опцию -i, то есть:
Если мы хотим ограничить число выводимых файлов в поиске по заданному параметру, мы ставим опцию -n и число:
То есть, данная команда с опцией -n 2 выведет нам только 2 первых найденных файла:
И напоследок, locate лучше выполнять с опцией -e, тогда будут отображены файлы, которые существуют в системе. Даже тогда, когда запись о файле находится в базе данных, все равно будет осуществлена проверка физического нахождения файла в системе:
Полезные команды whereis и which.
У нас установлены программы в системе и чтобы узнать размещение бинарных файлов, исходных кодов и руководств, относящихся к установленной программе, можно выполнить команду whereis. Для примера найдем информацию о пакете google-chrome:
Команда же which отображает полный путь к установленной программе. Также в качестве примера возьмем google-chrome:
Команда find в Linux – мощный инструмент сисадмина
Иногда критически важно быстро найти нужный файл или информацию в системе. Порой можно ограничиться стандартами функциями поиска, которыми сейчас обладает любой файловый менеджер, но с возможностями терминала им не сравниться.
Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:
Данная команда будет очень полезна системным администраторам для:
Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.
Синтаксис команды find:
Поиск по имени
Следующая команда ищет файл s.txt в текущем каталоге:
В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.
Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:
Если выдает слишком много ошибок в отказе разрешения, тогда можно добавить в конец команды – 2> /dev/null. Таким образом сообщения об ошибках будут перенаправляться по пути dev/null, что обеспечит более чистую выдачу.
Поиск по типу файла
Критерий -type позволяет искать файлы по типу, которые бывают следующих видов:
Например, указав критерий -type d будут перечислены только каталоги:
Поиск по размеру файла
Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.
В данном случае поиск выведет все файлы более 1 Гб (+1G).
Единицы измерения файлов:
Поиск пустых файлов и каталогов
Критерий -empty позволяет найти пустые файлы и каталоги.
Поиск времени изменения
Критерий -cmin позволяет искать файлы и каталоги по времени изменения. Для поиска всех файлов, измененных за последний час (менее 60 мин), нужно использовать -60:
Таким образом можно найти все файлы в текущем каталоге, которые были созданы или изменены в течение часа (менее 60 минут).
Для поиска файлов, которые наоборот были изменены в любое время кроме последнего часа необходимо использовать +60.
Поиск по времени доступа
Критерий -atime позволяет искать файлы по времени последнего доступа.
Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней).
Поиск по имени пользователя
Опция –user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:
Таким образом можно найти все файлы пользователя tisha в каталоге home, а 2>/dev/null сделает выдачу чистой без ошибок в отказе доступа.
Поиск по набору разрешений
Критерий -perm – ищет файлы по определенному набору разрешений.
Поиск файлов с разрешениями 777.
Операторы
Для объединения нескольких критериев в одну команду поиска можно применять операторы:
Например, чтобы найти файлы размером более 1 Гбайта пользователя tisha необходимо ввести следующую команду:
Если файлы могут принадлежать не только пользователю tisha, но и пользователю pokeristo, а также быть размером более 1 Гбайта.
Перед скобками нужно поставить обратный слеш «\».
Действия
К команде find можно добавить действия, которые будут произведены с результатами поиска.
-delete
Полезен, когда необходимо найти и удалить все пустые файлы, например:
Перед удалением лучше лишний раз себя подстраховать. Для этого можно запустить команду с действием по умолчанию -print.
Данное действие является особенным и позволяет выполнить команду по вашему усмотрению в результатах поиска.
С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска:
Другой пример использования действия -exec:
Заключение
Команду find можно использовать для поиска:
С полученными результатами можно сразу выполнять различные действия, такие как:
Команда find может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться.
Поиск файлов в Linux
Каждое окружение рабочего стола в Linux имеет свой встроенный инструмент поиска файлов и папок. Но даже если по умолчанию такой инструмент отсутствует, то вы в любой момент можете его установить самостоятельно. Но как обстоят дела с поиском файлов из командной строки? Если вам часто приходится работать в терминале или администрировать Linux-серверы без графического интерфейса, к чему вы обращаетесь, когда вам нужно найти файл или папку? К счастью, в Linux имеются встроенные прямо в систему утилиты, которые помогут отыскать всё, что вам нужно.
Поиск через графический интерфейс
Главное меню
С помощью главного меню ОС вы можете не только искать и запускать программы, но также и выполнять поиск файлов. Подобный функционал присутствует во многих окружениях рабочего стола (KDE, GNOME, Xfce и пр.). Например, в KDE это представлено следующим образом:
При этом стоит отметить, что такой вариант поиска ориентирован больше на поиск программ, нежели на поиск файлов, поэтому выполняется он только в домашнем каталоге и не уходит вглубь файловой системы.
Файловые менеджеры
Поиск по содержимому в Dolphin:

KFind
В KDE, помимо вышеупомянутых инструментов поиска, также есть замечательная утилита под названием KFind. С её помощью вы можете точно настроить параметры поиска (указать имя файла, его тип и путь поиска, обычный текстовый поиск или мета-поиск, дату изменения, размер, пользователя, группу и пр.). Она также позволяет сохранять результаты поиска в виде простого текстового списка URL-адресов найденных файлов:

SearchMonkey
SearchMonkey позволяет выполнять поиск файла, как по имени, так и по его содержимому, по диапазону дат и пр. Но главное преимущество SearchMonkey — это возможность везде применять регулярные выражения.
Поиск с применением регулярного выражения в SearchMonkey:

Recoll
Recoll — это приложение (поисковый движок) для полнотекстового поиска, выполняющее поиск ваших данных по содержимому, а не по внешним атрибутам (например, по имени файла). Вам не нужно запоминать, в каком файле или сообщении электронной почты вы хранили ту или иную информацию. Необходимо лишь указать слова (или выражения), которые должны или не должны присутствовать в искомом тексте, и взамен вы получите список соответствующих документов, упорядоченных таким образом, что первыми идут наиболее релевантные из них (подобно поисковым системам Интернета).
Установить программу можно из официальных репозиториев через командную строку:
sudo apt-get install recoll
Или через графический интерфейс:
Поиск файлов через терминал. Команда find
Команда find — производит поиск файлов и каталогов на основе заданного пользователем выражения и может выполнять назначенные пользователем действия над каждым найденным файлом.
Общий синтаксис команды find выглядит следующим образом:
find [опции] [путь. ] [выражение]
опции — аргументы, управляющие обработкой символьных ссылок, параметрами отладки и методом оптимизации;
путь — начальный каталог (или каталоги), в которых команда find будет искать файлы;
выражение — состоит из параметров, шаблонов поиска и действий, разделенных операторами.
Давайте рассмотрим следующий пример:
путь /var/www — задает каталог, в котором будет выполняться поиск;
Поиск файлов по имени
Например, для поиска файла document.pdf в каталоге /home/linuxize можно применить следующую команду:
Критериям поиска вышеприведенной команды будут соответствовать как Document.pdf, так и DOCUMENT.pdf и т.д.
Поиск файлов по расширению
Поиск файлов по расширению аналогичен поиску файлов по имени. Например, чтобы найти внутри каталога /var/log/nginx все файлы, заканчивающиеся на .log.gz, необходимо выполнить:
Поиск файлов по типу
Иногда вам может потребоваться выполнить поиск файлов определенного типа: обычные файлы, каталоги или символические ссылки. В Linux, как вы помните, всё является файлом.
l — символьная ссылка;
c — символьные устройства;
b — блочные устройства;
p — именованный канал (FIFO);
Например, чтобы найти все папки в текущем рабочем каталоге, используйте:
Поиск файлов по размеру
b — 512-байтовые блоки (по умолчанию);
w — двухбайтовые слова;
Следующая команда найдет все файлы размером 1024 байта в каталоге /tmp:
Команда find также позволяет искать файлы, размер которых больше или меньше заданного.
Если вы хотите выполнить поиск файлов размером более 1 МБ, то вам нужно использовать символ плюса + :
Вы даже можете искать файлы в пределах диапазона размеров. Следующая команда найдет все файлы размером от 1 до 2 МБ:
Поиск файлов по дате изменения
Команда find также может выполнять поиск файлов на основе даты их последнего изменения или времени доступа к ним.
Допустим, несколько дней назад вы изменили один из конфигурационных файлов dovecot, но забыли, какой именно. Вы можете легко отфильтровать все файлы в каталоге /etc/dovecot/conf.d, которые заканчивается на .conf и были изменены за последние пять дней:
Поиск файлов по правам доступа
Например, чтобы найти внутри каталога /var/www/ravesli все файлы с разрешением 644, вы должны использовать:
Рассмотрим следующий пример команды:
Данная команда найдет все файлы с разрешениями на чтение для пользователя, группы или других пользователей.
Поиск файлов по владельцу
Например, для поиска всех файлов и каталогов, принадлежащих пользователю ravesli, вы должны выполнить команду:
Вот еще один пример. Допустим, вы хотите найти все файлы, принадлежащие пользователю www-data, и изменить владельца соответствующих файлов с www-data на nginx. Вам нужно выполнить следующий набор команд:
Поиск и удаление файлов
Например, чтобы удалить из каталога /var/log/ все файлы, заканчивающиеся на .temp, применяется следующий набор команд:
Запись результатов поиска в файл
Если вы заранее знаете, что поиск вернет большое количество найденных объектов, или хотите сохранить отображаемый результат для последующего неспешного ознакомления с ним, то вам поможет команда, записывающая найденную информацию в файл:
Она производит поиск в каталоге /etc всех файлов, имеющих расширение .conf, и записывает результат в файл conf_search.
Поиск файлов через терминал. Команда locate
Стоит заметить, что если файл появился в системе уже после создания базы, то он не будет найден.
Поиск файлов через терминал. Команда grep
С помощью команды grep довольно легко проводить поиск нужной конфигурации или же проверять, не содержат ли файлы с кодом чего-нибудь подозрительного.
Поиск файлов через терминал. Команда whereis
Заключение
На этом уроке мы разобрали, как выполнить поиск файла в Linux различными способами: с помощью графического интерфейса или через терминал. Данный материал призван дать вам базовое понимание того, как выполнять поиск файлов в Linux-системах и показать, что существует множество различных вариантов, которые позволят вам решить любые задачи по поиску файлов и не только.
Поделиться в социальных сетях:
26 команд в Linux, которые должен знать каждый сисадмин
Комментариев: 2
Стоит добавить, что для обновления базы файлов, по которой осуществляется поиск с командой “locate”, есть команда “updatedb”.
А пакет, например, для Ubuntu или CentOS, в котором есть locate и updatedb — mlocate
Добавить комментарий Отменить ответ
Поиск в Linux с помощью команды find
Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.
Общий синтаксис
— путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».
— набор правил, по которым выполнять поиск.
* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.
Описание опций
| Опция | Описание |
|---|---|
| -name | Поиск по имени. |
| -iname | Регистронезависимый поиск по имени. |
| -type |






