← Назад к вопросам

Как через bash команду вытянуть структуру

1.0 Junior🔥 101 комментариев
#Автоматизация тестирования#Другое#Инструменты тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Чтобы вытянуть структуру директорий и файлов через bash, существует несколько мощных команд и их комбинаций. Я расскажу о наиболее часто используемых и эффективных подходах, которые применяю в своей практике для анализа структуры проектов, логов и файловых систем при тестировании.

Основные команды для отображения структуры

1. tree — классический и наглядный инструмент

Это специализированная утилита, которая отображает структуру в виде древовидного формата. Её часто нужно устанавливать отдельно.

# Базовая команда для текущей директории
tree

# Ограничить глубину просмотра (полезно для больших проектов)
tree -L 2

# Показать скрытые файлы (начинающиеся с точки)
tree -a

# Показать только директории
tree -d

# Комбинированный пример: показать структуру на глубину 3 уровня со скрытыми файлами
tree -a -L 3 /путь/к/директории

Если tree не установлена, её можно добавить:

  • Ubuntu/Debian: sudo apt install tree
  • CentOS/RHEL: sudo yum install tree
  • macOS: brew install tree

2. find — мощный и гибкий инструмент

Команда find предлагает наибольшую гибкость для фильтрации и поиска с выводом структуры.

# Показать всё содержимое текущей директории с относительными путями
find . -type f

# Показать только директории
find . -type d

# Структура с отступами для наглядности
find . -type d | sed 's|[^/]*/|- |g'

# Показать файлы и директории с указанием типа
find . -printf "%y %p\n"

3. ls и du в комбинации с рекурсией

Хотя ls не создаёт древовидную структуру, её можно сымитировать:

# Рекурсивный список с полными путями
ls -R

# Более читаемый рекурсивный вывод
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'

Продвинутые техники для тестировщика

В контексте QA часто требуется анализировать структуру логов, артефактов сборки или тестовых отчетов. Вот полезные комбинации:

Анализ структуры проекта с фильтрацией

# Показать только Java файлы в проекте
find . -name "*.java" -type f | sed -e "s/[^-][^\/]*\//  |/g" -e "s/|\([^ ]\)/|-\1/"

# Найти все JSON файлы и показать их в структуре
find . -name "*.json" -type f | awk -F/ '{for(i=2;i<=NF;i++){printf "%" (i-1)*2 "s%s\n", "", "├── "$i}}'

# Подсчитать количество файлов по типам в структуре
find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn

Создание читаемого отчета о структуре

# Сохранить структуру в файл с временными метками
tree -D -h -o project_structure.txt

# Структура с правами доступа (важно для проверки настроек безопасности)
find . -printf "%M %u %g %TY-%Tm-%Td %TH:%TM %p\n" | less

Практическое применение в QA

  1. Верификация артефактов сборки: Проверка, что все необходимые файлы присутствуют после сборки
  2. Анализ логов: Поиск паттернов в структуре лог-файлов
  3. Проверка конфигураций: Убедиться, что конфигурационные файлы находятся в правильных местах
  4. Документирование: Создание актуальной документации по структуре проекта
# Пример: проверка структуры веб-приложения
tree -I 'node_modules|.git|__pycache__' -L 4 --dirsfirst

# Пример: анализ структуры логов с фильтрацией по дате
find /var/log -type f -name "*.log" -mtime -7 | tree --fromfile .

Рекомендации по использованию

  • Для быстрого просмотра используйте tree -L 3
  • Для скриптовой обработки лучше подходит find с форматированием
  • Для документирования сохраняйте вывод в файл: tree -o structure.md
  • Используйте игнорирование шаблонов чтобы исключить служебные директории

Выбор конкретной команды зависит от задачи: tree лучше для визуального анализа, find — для программой обработки, а комбинации с sed/awk — для кастомного форматирования. В своей практике я чаще всего использую tree -I 'pattern' -L 4 для быстрой проверки и find с пайпами для автоматизации в скриптах.