Чтобы рекурсивно получать расширения файлов в каталоге 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()разделяет имя и расширение файла. - Расширение добавляется в набор для обеспечения уникальности.
- Наконец, возвращается набор расширений.