디렉토리구조 출력 프로그램 프로젝트

김민준·2025년 6월 6일

전체 디렉토리 구조를 자동 출력하고,
특정 파일들(params.yaml, *.launch, package.xml, CMakeLists.txt)의 핵심 내용을 요약해주는 Bash 스크립트


git 배포시 디렉토리 구조를 쉽게 볼수 있으면 처음보는 사람들도 프로젝트를 이해하고 협업하는데 도움이 될것 같다는 생각에 진행하게 되었다.

generate_project_summary.sh 스크립트 설명

📦 기능:

  1. 전체 폴더 트리 구조 생성 (제한 없음)
  2. 주요 설정 파일을 자동으로 탐색 후 핵심 내용 요약
  3. Markdown 문서 형태로 저장 (project_summary.md)

📄 generate_project_summary.sh

#!/bin/bash

# 📝 출력 파일 초기화
OUTPUT="project_summary.md"
> $OUTPUT

# 🔍 프로젝트 루트 확인
PROJECT_ROOT=$(pwd)
echo "# 📁 Project Summary - $(basename $PROJECT_ROOT)" >> $OUTPUT
echo "" >> $OUTPUT

# 1. 📂 전체 트리 구조 저장 (제한 없음)
echo "## 📂 Directory Structure" >> $OUTPUT
echo '```' >> $OUTPUT
tree -a >> $OUTPUT
echo '```' >> $OUTPUT
echo "" >> $OUTPUT

# 2. 🔍 특정 파일 요약 함수 정의
summarize_file() {
  local filepath="$1"
  local filename=$(basename "$filepath")

  echo "### 📄 $filename (in ${filepath%/*})" >> $OUTPUT
  echo '```' >> $OUTPUT

  if [[ $filename == *".launch" ]]; then
    # launch 파일은 주석 제외한 노드 이름/패키지 요약
    grep -E "<node|<param|<arg" "$filepath" | sed 's/^[ \t]*//' >> $OUTPUT
  elif [[ $filename == "params.yaml" ]]; then
    grep -Ev "^[ \t]*#|^$" "$filepath" | head -n 20 >> $OUTPUT
  elif [[ $filename == "CMakeLists.txt" ]]; then
    grep -E "(find_package|catkin_package|add_executable|target_link_libraries)" "$filepath" >> $OUTPUT
  elif [[ $filename == "package.xml" ]]; then
    grep -E "<(name|version|description|depend)>" "$filepath" >> $OUTPUT
  else
    head -n 20 "$filepath" >> $OUTPUT
  fi

  echo '```' >> $OUTPUT
  echo "" >> $OUTPUT
}

# 3. 📌 요약할 타겟 파일 목록 정의 및 루프
echo "## 📌 주요 설정 파일 요약" >> $OUTPUT
echo "" >> $OUTPUT

find "$PROJECT_ROOT" -type f \( \
    -name "params.yaml" -o \
    -name "*.launch" -o \
    -name "package.xml" -o \
    -name "CMakeLists.txt" \) | while read -r file; do
  summarize_file "$file"
done

echo "✅ Summary generated at $OUTPUT"

📦 사용법

  1. 위 코드를 generate_project_summary.sh 라는 파일로 저장
  2. 실행 권한 부여:
chmod +x generate_project_summary.sh
  1. 프로젝트 루트에서 실행:
./generate_project_summary.sh
  1. 결과 파일 확인:
cat project_summary.md

📝 예시 결과 일부

# 📁 Project Summary - ouster_ws

## 📂 Directory Structure

ouster_ws
├── src
│ ├── lio_sam
│ │ ├── config
│ │ │ └── params.yaml
│ │ ├── launch
│ │ │ └── run.launch
...

📌 주요 설정 파일 요약

📄 params.yaml (in src/lio_sam/config)

imuTopic: "/imu/data"
lidarTopic: "/ouster/points"
N_SCAN: 128
Horizon_SCAN: 1024

📄 run.launch (in src/lio_sam/launch)

<node pkg="lio_sam" type="lio_sam_node" name="lio_sam"/>

profile
지금까지 해온 여러 활동들을 간략하게라도 정리해보고자 합니다.

0개의 댓글