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