Как использовать команду find в Linux? — itGap

Команда find – позволяет искать файлы. Команда find в Linux производит поиск файлов и папок на основе заданных критериев и выполнять действия

Основная информация о Find

Find — это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.

Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.

Команда find имеет такой синтаксис:

find [папка] [параметры] критерий шаблон [действие]

Папка — каталог в котором будем искать

Параметры — дополнительные параметры, например, глубина поиска, и т д

Критерий — по какому критерию будем искать: имя, дата создания, права, владелец и т д.

Шаблон — непосредственно значение по которому будем отбирать файлы.

Об этой статье

Эту страницу просматривали 35 589 раз.

Введение

Одна из наиболее распространенных проблем, с которыми сталкиваются пользователи, впервые работающие с Linux — поиск нужных файлов. В данном руководстве рассмотрено использование команды find, которая позволяет решить эту проблему и осуществлять поиск файлов с различными фильтрами и параметрами.

Найти файлы по имени

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

Например, для поиска файла с именем document.pdf в /home/baks каталоге вы должны использовать следующую команду:

find /home/baks -type f -name document.pdf

   Чтобы запустить поиск без учета регистра, измените -name параметр с помощью -iname:

find /home/baks -type f -iname document.pdf

   Команда выше будет соответствовать «Document.pdf», «DOCUMENT.pdf» ..etc.

Основные параметры команды find

Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.

  • -P никогда не открывать символические ссылки
  • -L — получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
  • -maxdepth — максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
  • -depth — искать сначала в текущем каталоге, а потом в подкаталогах
  • -mount искать файлы только в этой файловой системе.
  • -version — показать версию утилиты find
  • -print — выводить полные имена файлов
  • -type f — искать только файлы
  • -type d — поиск папки в Linux

Ищем файлы, используя графический интерфейс

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

Поиск через меню оболочки

В Gnome 3 поиск прячется в меню Activities.

  • Кликаем по строчке Activities в верхнем левом углу над панелью избранных программ.
В последней версии Gnome это меню всегда закреплено в левой части панели инструментовВ последней версии Gnome это меню всегда закреплено в левой части панели инструментов

В последней версии Gnome это меню всегда закреплено в левой части панели инструментов

  • Затем нажимаем на поисковое поле, расположенное по центру в верхней части интерфейса.
Вот встроенный в систему поисковикВот встроенный в систему поисковик

Вот встроенный в систему поисковик

  • Вводим поисковой запрос.
Как видите, Ubuntu ищет не только по локальным ресурсам, но и в интернете. Это делает его отчасти полезнее поиска в терминалеКак видите, Ubuntu ищет не только по локальным ресурсам, но и в интернете. Это делает его отчасти полезнее поиска в терминале

Как видите, Ubuntu ищет не только по локальным ресурсам, но и в интернете. Это делает его отчасти полезнее поиска в терминале

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

Файл открывается в подходящей программе, а не в файловом менеджере

Если манипуляции мышкой вам чужды (вы же все-таки пользователь Linux), то можно обойтись и без нее. Для включения меню Activities нажмите на клавиатуре клавишу Win (Cmd на клавиатурах Apple). Чтобы начать поиск, просто начните вводить свой запрос (ничего выделять не нужно). А для выбора файла из выдачи просто нажмите на клавишу «Ввод» (Enter).

Ищем через файловый менеджер

  • Открываем любой файловый менеджер (в моем примере будет стандартный Nautilus). См. также: лучшие файловые менеджеры для Linux.
У вас может быть любой другой файловым менеджерУ вас может быть любой другой файловым менеджер

У вас может быть любой другой файловым менеджер

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

Иногда поле поиска отображается в виде строки

  • Вводим свой поисковой запрос и выбираем нужный объект.
Имеем схожий результатИмеем схожий результат

Имеем схожий результат

Итак, мы рассмотрели с вами все способы поиска файлов в Linux-системах. А если вы только собираетесь познакомиться с этой ОС — рекомендуем изучить популярные дистрибутивы Linux и выбрать самый подходящий.

Автор материала: Владимир Ковылов

zen.yandex.ru

Подписывайтесь на наш канал и ставьте лайки! А еще можете посетить наш официальный сайт.

Другие полезные применения команды find в Linux

Слышен громкий треск рвущихся шаблонов пользователей Mint. И пока шаблоны рвутся, пользователям мужских дистрибутивов предлагается делиться своими рецептами применения find.

Поиск файлов через терминал. Команда grep

Команда grep может использоваться не только в роли фильтра для других команд, но и производить поиск файлов. Для этого необходимо задать параметр -r и указать папку, в которой следует искать текст. Предположим, что мы хотим найти в каталоге /var/log все файлы, которые содержат строку error:

sudo grep -r «error» /var/log

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

Найти файлы по размеру 

Чтобы найти файлы по размеру файла, передайте

-size 

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

  • b: 512-байтовые блоки (по умолчанию)
  • c: байты
  • w: двухбайтовые слова
  • k: Килобайты
  • M: Мегабайт
  • G: Гигабайты

   Следующая команда найдет все файлы с точно 1024 байтами внутри /tmp каталога:

find /tmp -type f -size 1024c

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

В следующем примере мы ищем все файлы меньше, чем 1MBвнутри текущего рабочего каталога. Обратите внимание на -символ минус перед значением размера:

find . -type f -size -1M

   Если вы хотите искать файлы с размером больше чем 1MB, вам нужно использовать + символ плюс :

find . -type f -size +1M

   Вы даже можете искать файлы в диапазоне размеров. Следующая команда найдет все файлы между 1 и 2MB:

find . -type f -size +1M -size 21M

Поиск файлов по дате изменения 

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

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

Допустим, несколько дней назад вы изменили один из файлов конфигурации dovecot, но забыли, какой именно. Вы можете легко отфильтровать все файлы в /etc/dovecot/conf.d каталоге, который заканчивается .conf и был изменен за последние пять дней с помощью:

find /etc/dovecot/conf.d -name «*.conf» -mtime 5

   Вот еще один пример фильтрации файлов по дате изменения с использованием этой -daystart опции. Команда ниже выведет список всех файлов в /homeкаталоге, которые были изменены 30 или несколько дней назад:

find /home -mtime +30 -daystart

RSS

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Поиск файлов через терминал. Команда whereis

Команда whereis выполняет только одну задачу — отображает местоположение исполняемого файла, переданного ей в качестве параметра. Например, для того, чтобы узнать, где находится исполняемый файл команды uname, достаточно выполнить:

whereis uname

Фильтрация по глубине

Для этого раздела нам потребуется создать во временной директории трехуровневую структуру директорий с десятью директориями на первом уровне. В каждой директории (включая временную) будет десять поддиректорий и десять файлов.

Создадим структуру выполнением следующих команд:

mkdir -p ~/test/level1dir{1..10}/level2dir{1..10}/level3dir{1..10}touch ~/test/{file{1..10},level1dir{1..10}/{file{1..10},level2dir{1..10}/{file{1..10},level3dir{1..10}/file{1..10}}}}cd ~/test

Для проверки структуры можно воспользоваться командами ls и cd. Разобравшись в организации нужно вернуться в тестовую директорию:

cd ~/test

Теперь попробуем найти в этой структуре конкретные файлы. Начнем с примера обычного поиска по имени:

find -name file1

Результатов очень много. Если мы переведем вывод на счётчик, мы увидим, что всего таких файлов 1111:

find -name file1 | wc -l1111

В большинстве случаев эти результаты избыточны. Давайте попробуем сузить поиск.

Можно задать максимальную глубину поиска в директории поиска верхнего уровня:

find -maxdepth число -name имя

Чтобы найти «file1» только в директориях «level1» и выше, нужно указать максимальную глубину, равную 2 (1 для директории верхнего уровня и 1 для директорий уровня 1):

find -maxdepth 2 -name file1


С этим списком справиться гораздо проще.

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

find -mindepth число -name имя

Так мы можем найти все файлы на концах ветвей дерева директорий:

find -mindepth 4 -name file1


. . .
Из-за нашей древовидной структуры снова будет выведено большое количество результатов (1000).

Можно комбинировать максимальную и минимальную глубину, чтобы сосредоточиться на узком диапазоне:

Найти файлы по владельцу 

Чтобы найти файлы, принадлежащие конкретному пользователю или группе, используйте параметры -user и -group.

Например, для поиска всех файлов и каталогов, принадлежащих пользователю baks, вы должны выполнить:

find / -user baks

   Вот пример из реальной жизни. Допустим, вы хотите найти все файлы , принадлежащие пользователю www-data и изменить владельца совпавших файлов из www-data к nginx:

find / -user www-data -type f -exec chown nginx {} ;

Найти и удалить файлы 

Чтобы удалить все соответствующие файлы, добавьте -delete опцию в конец выражения соответствия.

Убедитесь, что вы используете эту опцию, только если вы уверены, что результат соответствует файлам, которые вы хотите удалить. Рекомендуется распечатать соответствующие файлы перед использованием -delete параметра.

Например, чтобы удалить все файлы, заканчивающиеся на .temp из, /var/log/ вы должны использовать:

find /var/log/ -name `*.temp` -delete

     Используйте -deleteопцию с особой осторожностью. Командная строка find оценивается как выражение, и если вы -delete сначала добавите параметр, команда удалит все, что находится ниже указанных вами начальных точек.

Когда дело доходит до каталогов, find можно удалить только пустые каталоги так же, как rmdir.

Понравилась статья? Поделиться с друзьями: