Работа с расширениями файлов — распространенная задача в Linux, независимо от того, управляете ли вы файлами, пишете сценарии оболочки или выполняете системное администрирование. В этой статье мы рассмотрим различные методы получения списка расширений файлов в Linux с использованием различных инструментов командной строки и методов написания сценариев. Мы предоставим примеры кода и пошаговые инструкции для каждого метода, что позволит вам выбрать тот, который лучше всего соответствует вашим потребностям.
Метод 1: использование команды find
Команда find— мощный инструмент для поиска файлов в иерархии каталогов. Чтобы перечислить расширения файлов с помощью find, вы можете использовать параметр -nameс подстановочным знаком. Вот пример:
find /path/to/directory -type f -name "*.ext" -exec sh -c 'echo "${0##*.}"' {} \; | sort -u
Метод 2: использование команды ls с awk
Команда lsобычно используется для вывода списка файлов в каталоге. Объединив его с инструментом обработки текста awk, мы можем извлекать расширения файлов. Вот пример:
ls -1 /path/to/directory/* | awk -F. '{if (NF>1) {print $NF}}' | sort -u
Метод 3: использование команды find с sed
Другой подход с использованием команды findпредполагает использование редактора потока sedдля извлечения расширений файлов. Вот пример:
find /path/to/directory -type f -name "*.ext" | sed 's/.*\.//' | sort -u
Метод 4: использование команды дерева
Команда treeполезна для отображения дерева каталогов. Передав его вывод в grepи cut, мы можем извлечь расширения файлов. Вот пример:
tree -fai /path/to/directory | grep -oP '\.\K[^./]+' | sort -u
Метод 5: Написание сценария оболочки
Если вы предпочитаете решение многократного использования, вы можете написать сценарий оболочки, используя комбинацию findи конструкций сценария оболочки. Вот пример:
#!/bin/bash
directory="/path/to/directory"
find "$directory" -type f -name "*.ext" | while read -r file; do
extension="${file##*.}"
echo "$extension"
done | sort -u
В этой статье мы рассмотрели несколько методов получения списка расширений файлов в Linux. Предпочитаете ли вы использовать инструменты командной строки, такие как find, ls, sedили tree, или писать собственный оболочки, у вас есть множество вариантов достижения вашей цели. Включив эти методы в свой рабочий процесс, вы сможете эффективно управлять файлами и выполнять задачи, связанные с расширениями файлов в среде Linux.