Часто мы оказываемся в ситуации, когда нам нужно искать несколько файлов с разными расширениями, что является обычным сценарием для многих пользователей Linux, особенно при работе в терминале.
Существует несколько утилит Linux, которые мы можем использовать для поиска файлов в файловой системе, но поиск файлов с несколькими расширениями иногда может оказаться сложным и требует специальных команд.
Одной из многих утилит для поиска файлов в файловой системе Linux является утилита поиска. В этом практическом руководстве мы рассмотрим несколько примеров использования find, которые помогут нам найти несколько имен файлов одновременно.
Прежде чем мы углубимся в собственно команды, давайте рассмотрим краткое введение в утилиту “find” Linux.
Команда find – это универсальный инструмент, используемый для поиска файлов и каталогов в файловой системе Linux.
find directory options [expression]
Вот краткий обзор его компонентов:
Давайте перейдем к рассмотрению некоторых примеров команды find в Linux.
Чтобы найти файлы с разными расширениями, вы можете использовать опцию -name
в сочетании с оператором -o
(OR), который позволяет вам указать несколько шаблонов для соответствия различным типам файлов.
Давайте рассмотрим несколько примеров, чтобы проиллюстрировать, как это работает.
Предполагая, что вы хотите найти все файлы в текущем каталоге с расширениями файлов .sh
и .txt
, вы можете сделать это, выполнив приведенную ниже команду:
find . -type f \( -name "*.sh" -o -name "*.txt" \)
destroyer@andreyex ~$ -/bin s find . -type f \( -name "*.sh" -o -name "*.txt" \) /examples.txt /script.sh ./test.sh /list.txt destroyer@andreyex ~/bin
Интерпретация приведенной выше команды:
.
означает текущий каталог-type
используется для указания типа файла, и здесь мы ищем обычные файлы, представленные f
-name
используется для указания шаблона поиска, в данном случае расширений файлов-o
означает “OR”
Рекомендуется заключать расширения файлов в квадратные скобки, а также использовать \
( косую черту), как в команде.
Чтобы найти три имени файлов с расширениями .sh
, .txt
и .c
, выполните команду ниже:
find . -type f \( -name "*.sh" -o -name "*.txt" -o -name "*.c" \)
destroyer@andreyex ~$ -/bin s find . -type f \( -name "*.sh" -o -name "*.txt" -o -name "*.c" \) /examples.txt script.sh ./test.sh ./list.txt ./file.c ./header. c lost.c destroyergandreyex -/bin s
Вот еще один пример, где мы ищем файлы с расширениями .png
, .jpg
, .deb
и .pdf
:
find /home/destroyer/Documents/ -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.deb" -o -name ".pdf" \)
destroyer@andreyex ~$ find /home/destroyer/Documents/ -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.deb" -o -name ".pdf" \) /home/destroyer/Documents/festival56.jpg /home/destroyer/Documents/false.jpg /home/destroyer/Documents/monitor.jpg /home/destroyer/Documents/DIMS. jpg /home/destroyer/Documents/mylife.jpg /home/destroyer/Documents/cabling.png
Вы также можете использовать подстановочные знаки для соответствия шаблонам. Например, чтобы найти все файлы с .log
, .txt
или .cfg
расширениями:
find /var/log/ -type f \( -name "*.log" -o -name "*.txt" -o -name "*.cfg" \)
Предположим, вы хотите найти файлы, которые заканчиваются на .tar.gz
или .zip
:
find /path/to/search/ -type f \( -name "*.tar.gz" -o -name "*.zip" \)
Когда вы критически изучите все приведенные выше команды, небольшая хитрость заключается в использовании опции -o
в команде find, это позволяет вам добавить больше имен файлов в поисковый массив, а также узнать имена файлов или расширения файлов, которые вы ищете.
В этой статье мы рассмотрели, как использовать команду find для поиска файлов с несколькими расширениями. Используя опцию -name
в сочетании с оператором -o
, вы можете легко находить файлы, соответствующие различным шаблонам, с помощью одной команды.
Чтобы глубже изучить команду find и ее многочисленные возможности, вы можете обратиться к странице руководства по поиску, набрав man find
в вашем терминале.