IT/etc

파워셸로 디렉토리 구조 탐색 (윈도우 tree)

k6o-ops 2024. 10. 25. 13:00

이것만 알면 tree 안써도됨. 지피티같은 녀석들을 위한 파워셸 스크립트

프로젝트의 구조를 알려주는 건 쉽지 않은데, 특히 우리 llm 친구들(지피티, 잼미니, 클로드 등등)에게 이해시키기 위해 쉬운 방법이 필요하겠죠? 오늘은 파워셸(PowerShell) 스크립트를 사용하여 프로젝트의 디렉토리 구조를 쉽게 보여줄 수 있는 방법에 대해 알아볼게요.

???: 아니 tree 잘 쓰면 되는 거 아님?

  • 리눅스의 tree 명령어와 윈도우 tree 명령이 좀 다르기 때문에, 그냥 이런 스크립트를 가져왔읍니다..

윾..

파워셸이란?

윈도우에서 사용할 수 있는 명령어 인터페이스인데요, CLI의 일종으로 간단하게 컴퓨터를 제어할 수 있습니다. 자세한 내용은 궁금하다면 검색해 보시는게 빠릅니다.

특정 디렉토리 제외하고 트리 구조 뽑기

이 스크립트는 여러분의 프로젝트에서 ignoreList 내용 참조하여 불필요한 디렉토리를 제외하고 탐색합니다. 그러면 구조를 무려 텍스트로 알 수 있습니다.
mypwdtree.ps1

# 프로젝트 디렉토리 설정 및 출력 파일 경로 설정
$projectDir = Get-Location
$outputFile = "$projectDir\directory-structure.txt"

# 제외할 디렉토리 목록을 스크립트 내에서 정의
$ignoreList = @("dir_to_ignore1", "dir_to_ignore2", "node_modules")

# 디렉토리 구조 탐색 함수 정의
function Get-DirectoryStructure {
    param (
        [string]$path,
        [int]$depth
    )
    $items = Get-ChildItem -Path $path -Force | Where-Object { $_.Name -notin $ignoreList }
    foreach ($item in $items) {
        $indent = " " * ($depth * 2)
        if ($item.PSIsContainer) {
            Add-Content -Path $outputFile -Value "$indent- $($item.Name)/"
            Get-DirectoryStructure -path $item.FullName -depth ($depth + 1)
        } else {
            Add-Content -Path $outputFile -Value "$indent- $($item.Name)"
        }
    }
}

# 디렉토리 구조 출력 파일 초기화 및 탐색 시작
if (Test-Path $outputFile) {
    Remove-Item $outputFile
}
New-Item -Path $outputFile -ItemType File
Get-DirectoryStructure -path $projectDir -depth 0

Write-Host "디렉토리 구조가 $outputFile 파일에 저장되었습니다. 제외된 디렉토리는 $($ignoreList -join ', ') 입니다."

스크립트 사용 방법

  1. ignore.csv 파일 생성: 프로젝트 루트에 ignore.csv를 만들고, 제외할 디렉토리 이름을 나열합니다. 예를 들어, node_modules, build 등이 있겠죠.
  2. 파워셸 실행: 프로젝트 디렉토리에서 파워셸을 열어주세요.
  3. 스크립트 실행: 위에 제공된 mypwdtree.ps1 스크립트를 파워셸에 복사하고 실행합니다.
  4. 결과 확인: directory-structure.txt 파일을 열어 프로젝트의 디렉토리 구조를 확인합니다.

주의사항

파일 및 폴더 이름에는 특수 문자를 사용하지 마세요. <, >, :, ", /, \, |, ?, *,, 등이 문제를 일으킬 수 있습니다.


이 파워셸 스크립트를 통해 프로젝트 구조를 쉽게 파악할 수 있게 되었습니다. llm 친구들도 이제 프로젝트의 구조를 더 잘 이해할 수 있겠죠? 이 글이 여러분의 슬기로운 코딩 생활(with GenAI)에 도움이 되기를 바랍니다!