Поиск по сайту:

Как найти файлы по имени или расширению в Linux


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

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

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

Прежде чем мы углубимся в сами команды, давайте рассмотрим краткое введение в утилиту Linux `find`.

Введение в команду find

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

Самый простой и общий синтаксис утилиты find следующий:

find directory options [expression]

Вот краткий обзор его компонентов:

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

Давайте перейдем к рассмотрению некоторых примеров команды find в Linux.

Поиск нескольких расширений файлов

Чтобы найти файлы с разными расширениями, вы можете использовать параметр -name в сочетании с оператором -o (OR), который позволяет указать несколько шаблонов для соответствия различным типам файлов.

Давайте рассмотрим несколько примеров, чтобы проиллюстрировать, как это работает.

Пример 1. Поиск файлов .sh и .txt

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

find . -type f \( -name "*.sh" -o -name "*.txt" \)

Интерпретация команды выше:

  • . означает текущий каталог
  • Опция -type используется для указания типа файла, и здесь мы ищем обычные файлы, представленные f
  • Опция -name используется для указания шаблона поиска, в данном случае расширения файлов.
  • -o означает «ИЛИ»

Рекомендуется заключить расширения файлов в квадратные скобки, а также использовать escape-символ \ ( обратная косая черта), как в команде.

Пример 2. Поиск файлов .sh, .txt и .c.

Чтобы найти три имени файла с расширениями .sh, .txt и .c, введите следующую команду:

find . -type f \( -name "*.sh" -o -name "*.txt" -o -name "*.c" \)

Пример 3. Поиск файлов .png, .jpg, .deb и .pdf.

Вот еще один пример поиска файлов с расширениями .png, .jpg, .deb и .pdf. :

find /home/aaronkilik/Documents/ -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.deb" -o -name ".pdf" \)

Пример 4. Использование подстановочных знаков для поиска

Вы также можете использовать подстановочные знаки для сопоставления с шаблонами. Например, чтобы найти все файлы с расширениями .log, .txt или .cfg:

find /var/log/ -type f \( -name "*.log" -o -name "*.txt" -o -name "*.cfg" \)

Пример 5. Поиск файлов со сложным шаблоном

Предположим, вы хотите найти файлы, заканчивающиеся на .tar.gz или .zip:

find /path/to/search/ -type f \( -name "*.tar.gz" -o -name "*.zip" \)

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

Заключение

В этом руководстве мы рассмотрели, как использовать команду find для поиска файлов с несколькими расширениями. Используя параметр -name в сочетании с оператором -o, вы можете легко найти файлы, соответствующие различным шаблонам, с помощью одной команды.

Чтобы глубже изучить команду find и ее многочисленные возможности, вы можете обратиться к странице руководства по поиску, набрав man find в своем терминале.

man find

Не стесняйтесь экспериментировать с этими командами и адаптировать их к вашим конкретным потребностям!

Статьи по данной тематике: