Tree 명령어 정리하기

Tree 명령어 정리하기

1. Tree란?

Tree는 디렉토리 구조를 시각적으로 표현해주는 매우 유용한 명령줄 도구입니다. 복잡한 프로젝트의 파일 구조를 파악하거나, 문서화 작업을 할 때 특히 유용합니다.

아래와 같이 출력되며, 내 프로젝트의 구조를 파악하거나 가끔 리팩토링을 위해 어떻게 구조를 짜야될지에 대해 큰 도움을 받고 있습니다…ㅎ

.
├── src/
│   ├── components/
│   │   ├── Header.js
│   │   └── Footer.js
│   └── pages/
│       ├── Home.js
│       └── About.js
└── public/
    ├── images/
    └── styles/

2. 설치 방법

macOS

Homebrew를 사용하여 설치

brew install tree

Linux (Ubuntu/Debian)

apt 패키지 매니저를 사용하여 설치

sudo apt-get update
sudo apt-get install tree

Linux (CentOS/RHEL)

yum을 사용하여 설치

sudo yum install tree

Windows

  1. 공식 사이트에서 다운로드
  2. 또는 Chocolatey 패키지 매니저 사용.
choco install tree

설치 확인:

tree --version

3. 기본 사용법

현재 디렉토리 구조 보기

tree

특정 디렉토리 구조 보기

tree /path/to/directory

기본 옵션

  • -a: 숨김 파일 표시
tree -a
  • -d: 디렉토리만 표시
tree -d
  • -L n: n단계까지의 깊이만 표시
tree -L 2

4. 고급 사용법

파일 패턴 필터링

특정 패턴의 파일만 표시:

tree -P "*.js"  # .js 파일만 표시

특정 패턴의 파일 제외:

tree -I "node_modules|dist|build"  # node_modules, dist, build 디렉토리 제외

출력 형식 지정

파일 크기 표시:

tree -sh  # 사람이 읽기 쉬운 형태로 파일 크기 표시

파일/디렉토리 권한 표시:

tree -p  # 권한 정보 표시

마지막 수정 시간 표시:

tree -D  # 마지막 수정 날짜 표시

JSON 형식으로 출력

tree -J  # JSON 형식으로 출력

HTML 형식으로 출력

tree -H "http://localhost" > tree.html  # HTML 파일로 저장

5. 실용적인 예제

프로젝트 문서화

# 프로젝트 구조를 README.md에 추가
tree -L 3 --dirsfirst > project_structure.txt

대규모 프로젝트 탐색

# node_modules 제외, 2단계 깊이까지만 표시, 디렉토리만
tree -L 2 -d -I "node_modules"

파일 크기 분석

# 파일 크기를 포함하여 큰 파일 찾기
tree -sh --du

Git 프로젝트 구조 분석

# .git 및 node_modules 제외, JavaScript 파일만 표시
tree -I "node_modules|.git" -P "*.js"

6. 자주 발생하는 문제와 해결 방법

문자 인코딩 문제

한글이나 특수문자가 깨질 경우:

tree --charset unicode

권한 문제

Permission denied 오류 발생 시:

sudo tree /path/to/directory

메모리 문제

너무 큰 디렉토리를 스캔할 때:

tree -L 2  # 깊이를 제한하여 실행

유용한 팁

  1. alias 설정하기
# .bashrc 또는 .zshrc에 추가
alias t='tree -L 2'  # 2단계 깊이까지만 표시
alias td='tree -d'   # 디렉토리만 표시
  1. 출력 결과 저장하기
tree > structure.txt  # 텍스트 파일로 저장
tree -H . > structure.html  # HTML 파일로 저장
  1. 파이프라인과 함께 사용하기
tree | less  # 페이지 단위로 보기
tree | grep "\.js$"  # JavaScript 파일만 필터링