Как рекурсивно получать расширения файлов в Ubuntu: методы и примеры

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

Способ 1: использование команды find

find /path/to/directory -type f | rev | cut -d. -f1 | rev | sort -u

Объяснение:

  • Команда findиспользуется для поиска файлов в иерархии каталогов.
  • /path/to/directoryследует заменить фактическим путем к каталогу, в котором вы хотите выполнить поиск.
  • Флаг -type fгарантирует, что учитываются только файлы (а не каталоги).
  • Вывод команды findпередается по конвейеру (|) команде rev, которая переворачивает каждую строку.
  • Затем команда cutиспользуется для извлечения расширений файлов с использованием точки (.) в качестве разделителя.
  • Наконец, команда revиспользуется снова, чтобы вернуть расширения в исходный порядок, а команда sort -uсортирует и удаляет повторяющиеся расширения.
  • >

Способ 2: использование команды дерева (требуется установка)

sudo apt-get install tree   # Install tree if not already installed
tree -fi /path/to/directory | grep -o '\.[^[:space:].]*$' | sort -u

Объяснение:

  • Команда treeвыводит содержимое каталогов в древовидном формате.
  • Флаг

  • -fiотображает только файлы (без каталогов) и печатает полный путь к каждому файлу.
  • /path/to/directoryследует заменить фактическим путем к каталогу, в котором вы хотите выполнить поиск.
  • Вывод команды treeпередается по конвейеру (|) команде grep, которая извлекает расширения файлов с помощью регулярного выражения.
  • Команда sort -uсортирует и удаляет повторяющиеся расширения.

Метод 3. Использование языка программирования Python

import os
def get_file_extensions(directory):
    extensions = set()
    for root, dirs, files in os.walk(directory):
        for file in files:
            _, ext = os.path.splitext(file)
            extensions.add(ext)
    return extensions
directory = '/path/to/directory'   # Replace with the actual directory path
extensions = get_file_extensions(directory)
print(extensions)

Объяснение:

  • Функция os.walk()используется для рекурсивного обхода дерева каталогов.
  • Для каждого встреченного файла функция os.path.splitext()разделяет имя и расширение файла.
  • Расширение добавляется в набор для обеспечения уникальности.
  • Наконец, возвращается набор расширений.