디렉터리 구조를 계층적으로 확인해야 할 때 tree 명령어는 매우 유용한 도구입니다. 파일 시스템의 폴더와 파일을 나무 형태로 표현하여 복잡한 중첩 구조를 한눈에 파악할 수 있게 해줍니다.
핵심 옵션 정리
| 옵션 | 기능 설명 |
|---|---|
-a | 숨김 파일 포함 모든 항목 표시 |
-d | 디렉터리만 출력 |
-L 숫자 | 탐색 깊이 제한 |
-I 패턴 | 특정 패턴 제외 |
-P 패턴 | 특정 패턴만 포함 |
-f | 전체 경로 표시 |
-p | 한 정보 함께 출력 |
-h | 가독성 좋은 파일 크기 표시 |
-o 파일 | 결과를 파일로 저장 |
-C | 색상 구분 적용 |
-J | JSON 형식 출력 |
-X | XML 형식 출력 |
실전 활용 예시
기본 디렉터리 구조 확인
별도 인자 없이 실행하면 현재 위치의 모든 하위 항목을 트리 구조로 보여줍니다.
$ tree
.
├── docs
│ └── manual.md
├── src
│ ├── utils
│ │ └── helper.py
│ └── main.py
└── README.txt
3 directories, 3 files
폴더만 추려서 보기
파일은 제외하고 디렉터리 구조만 확인할 때 사용합니다.
$ tree -d
.
├── docs
└── src
└── utils
3 directories
깊이 제한 탐색
대규모 프로젝트에서 전체 구조를 볼 필요 없이 특정 레벨까지만 살펴볼 수 있습니다.
$ tree -L 2 /var/log
/var/log
├── apt
│ ├── history.log
│ └── term.log
├── nginx
│ ├── access.log
│ └── error.log
└── syslog
3 directories, 4 files
불필요한 항목 필터링
빌드 결과물이나 의존성 폴더를 제외하고 소스 코드 구조만 파악할 때 유용합니다.
# 여러 패턴 동시 제외
$ tree -I 'dist|build|*.pyc'
# 특정 폴더만 제외
$ tree -I __pycache__
특정 항목만 선택적으로 표시
패턴 매칭으로 필요한 파일만 골라볼 수 있습니다.
# Python 파일만 보기
$ tree -P '*.py'
# 특정 폴더 구조만 보기 (2단계 제한)
$ tree -P 'node_modules' -L 2
결과 파일로 저장
리다이렉션을 활용해 문서화용으로 구조를 저장합니다.
$ tree -L 3 -o project_structure.txt
권한과 크기 정보 함께 확인
상세 정보가 필요한 경우 여러 옵션을 조합합니다.
$ tree -ph -L 2
.
├── [drwxr-xr-x] docs
│ └── [-rw-r--r--] 4.0K manual.md
└── [drwxr-xr-x] src
├── [drwxr-xr-x] utils
└── [-rw-r--r--] 12K main.py
3 directories, 2 files
JSON 형식 데이터 추출
프로그램에서 파싱하거나 API 응답으로 활용할 수 있는 구조화된 데이터를 얻습니다.
$ tree -J -L 2
[{"type":"directory","name":".","contents":[
{"type":"directory","name":"docs","contents":[
{"type":"file","name":"manual.md"}
]},
{"type":"directory","name":"src","contents":[
{"type":"directory","name":"utils"},
{"type":"file","name":"main.py"}
]}
]}]
설치 방법
일부 배포판에는 기본 설치되어 있지 않을 수 있습니다.
# Debian/Ubuntu
$ sudo apt install tree
# RHEL/CentOS/Fedora
$ sudo yum install tree
# 또는
$ sudo dnf install tree
# macOS
$ brew install tree