# Folder Flattening

> Реструктуризация вложенных иерархий папок в плоские, машиночитаемые структуры. На базе Bash с интеллектуальной логикой объединения.

- Skill: `ellmos-ai/folder-flattening-5` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ellmos-ai/folder-flattening-5`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ellmos-ai/folder-flattening-5/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ellmos-ai (https://skillmd.com/u/ellmos-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ellmos-ai/folder-flattening-5

---


<img src="banner.png" width="100%" alt="folder-flattening banner">

> **Русский** — Официальная русская версия `folder-flattening`.

# Рабочий процесс: Folder Flattening

Цель: Преобразовать вложенные структуры папок в плоскую, машиночитаемую структуру.
Преимущество: Больше никакого ручного перехода по каталогам — поиск через базу данных (`Verzeichnis.db`).
Дубликаты допускаются, если они оправданы тематически.

---

## Обзор фаз

| Фаза | Что происходит | Раздел скрипта |
|-------|-------------|----------------|
| 1 | Сплющивание (Flatten): Перенос всех подпапок на один уровень | `phase_flatten` |
| 2 | Сокращение (Shorten): Усечение длинных путей до последнего сегмента, объединение при конфликтах | `phase_shorten` |
| 3 | Очистка: Устранение множественных подчеркиваний (`___`), удаление концевого `_` | `phase_cleanup_underscores` |
| 4 | Группировка: Перемещение числовых папок, CD-папок и коротких имен в сборные папки | `phase_group_problematic` |
| 5 | Анализ триплетов: Скользящие группы по 3, кратчайшее имя как цель объединения | `phase_tripel_merge` |
| 6 | Объединение по формату медиа: Консолидация папок по типу файлов (шаблон) | `phase_media_merge` |
| 7 | Очистка: Удаление пустых папок | `phase_cleanup_empty` |

---

## Важные правила

### Сопоставление в анализе триплетов
- **Подстрока**: `Education` в `EducationalBrochures` -> объединить в `Education`
- **Множественное число/умлаут**: `Room` = `Rooms`, `Part` = `Parts`, `Book` = `Books`
- **Первое слово**: `Autism ADHD` совпадает с `Autism Career` (одинаковое начало)

### Минимальная длина
- Односложное имя без пробелов: **не менее 8 симво символов** (предотвращает случайное объединение `Hand`, `House`, `Form`)
- С пробелами (например, `ICF Catalog`): **от 3 символов OK**
- Это позволяет сохранить `ICF`, `ASD Women` и т.д.

### Перезапуск после объединения
После каждого объединения список папок перезагружается и перезапускается с целевой папки объединения.
Таким образом, например, `Autism` собирает все расширения перед тем, как двигаться дальше.

---

## Объединение по формату медиа (Система шаблонов)

Фаза 6 использует массив шаблонов `MEDIA_TYPES`. Каждая запись определяет:
- Целевую папку (с префиксом `_`)
- Расширения файлов, относящиеся к этому типу

```bash
MEDIA_TYPES=(
    "_Audio|mp3|m4a|wav|flac|ogg|wma|aac|opus|aiff"
    "_Video|mp4|avi|mkv|mov|wmv|flv|webm|m4v|mpg|mpeg|3gp"
    "_Images|jpg|jpeg|png|gif|bmp|tiff|tif|webp|svg|ico|heic|heif|raw|cr2|nef"
    # Extensible:
    # "_Spreadsheets|xlsx|xls|csv|ods"
    # "_Presentations|pptx|ppt|odp"
    # "_Code|py|js|ts|sh|bat|ps1"
    # "_CAD|dwg|dxf|step|stl"
    # "_3D|obj|fbx|blend|gltf|glb"
    # "_Fonts|ttf|otf|woff|woff2"
)
```

Перемещаются только папки, содержащие **исключительно** файлы одного типа.
Папки с подпапками пропускаются.

### Добавление нового типа медиа

Просто добавьте новую строку в массив `MEDIA_TYPES`:
```bash
"_TargetFolder|ext1|ext2|ext3"
```

---

## Выполнение

```bash
# Complete run:
cd /path/to/target/directory
bash ordner_flattening_komplett.sh

# Or individual phases:
bash ordner_flattening_komplett.sh --phase flatten
bash ordner_flattening_komplett.sh --phase tripel
bash ordner_flattening_komplett.sh --phase media
bash ordner_flattening_komplett.sh --phase cleanup
```

---

## Опытные данные (Сессия 2026-01-26)

- Старт: 206 папок + 252 отдельных файла, ~5600 вложенных подпапок
- После сплющивания: ~2200 папок на одном уровне
- После сокращения и очистки: ~2005 папок
- После группировки (числа, CD): ~2005 -> созданы сборные папки
- После триплетов v1: ~1561 папка
- После триплетов v2 (правило 8 символов): дальнейшее сокращение
- Фаза медиаформатов: Папки аудио/видео/изображений консолидированы

