Как найти файлы по имени или расширению в 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
Не стесняйтесь экспериментировать с этими командами и адаптировать их к вашим конкретным потребностям!