우분투 tree 명령어 완벽 정복: 디렉터리 구조 시각화와 실무 활용법

개요

리눅스 환경에서 복잡한 파일과 폴더 계층 구조를 한눈에 파악할 수 있는 tree 명령어의 핵심 기능과 실무 활용 팁을 정리합니다. 패키지 설치부터 계층 깊이 제한, 숨김 파일 및 권한 표시, 패턴 필터링까지 다양한 예제와 함께 살펴봅니다. 터미널 환경에서 프로젝트 구조를 직관적으로 파악하고 문서화하는 효율적인 방법을 안내합니다.

tree 패키지 설치 및 기본 디렉터리 트리 시각화

tree 명령어 실습을 진행하기 위해 패키지 목록을 갱신하고 tree 유틸리티를 설치합니다.

apt-get update -qq && apt-get install -y tree

실습에 사용할 예제 디렉터리 구조를 생성하기 위해 mkdir -p demo_project/src demo_project/docs demo_project/tests 명령어를 실행합니다.

mkdir -p demo_project/src demo_project/docs demo_project/tests

각 디렉터리 내에 배치할 샘플 파일들을 생성하기 위해 touch 명령어를 실행합니다.

touch demo_project/src/main.py demo_project/src/utils.py demo_project/docs/README.md demo_project/tests/test_main.py

tree 명령어는 지정한 디렉터리의 하위 구조를 계층적인 트리 형태로 시각화하여 출력합니다.
옵션 없이 실행하면 모든 하위 디렉터리와 파일을 재귀적으로 탐색하여 전체 목록과 개수 통계를 함께 표시합니다.
⚙️ [주요 옵션]

-a : 점(.)으로 시작하는 숨김 파일을 포함하여 모든 항목을 출력합니다.
-d : 파일은 제외하고 디렉터리 목록만 출력합니다.
-L level : 트리를 탐색할 최대 디렉터리 깊이를 지정합니다.
-f : 각 파일과 디렉터리의 전체 상대 경로를 함께 출력합니다.
-p : 파일 형식과 접근 권한(permission) 정보를 함께 표시합니다.
-h : 파일 크기를 사람이 읽기 쉬운 단위(KB, MB, GB)로 표시합니다.
-s : 각 파일의 크기를 바이트 단위로 표시합니다.
-I pattern : 지정한 와일드카드 패턴과 일치하는 파일이나 디렉터리를 출력에서 제외합니다.

tree demo_project

탐색 깊이 제한(-L) 및 디렉터리 전용 출력(-d)

깊이 제한 및 디렉터리 필터링 실습을 위한 추가 하위 디렉터리를 생성하기 위해 mkdir -p demo_project/src/components demo_project/src/assets/images 명령어를 실행합니다.

mkdir -p demo_project/src/components demo_project/src/assets/images

새로 생성한 디렉터리 내에 배치할 샘플 파일들을 만들기 위해 touch demo_project/src/components/button.py demo_project/src/assets/images/logo.png 명령어를 실행합니다.

touch demo_project/src/components/button.py demo_project/src/assets/images/logo.png

tree -L 2 demo_project 명령어는 디렉터리 탐색 깊이를 최대 2단계로 제한하여 출력합니다.
3단계 이하의 깊은 경로에 있는 파일과 디렉터리는 생략되므로 복잡한 프로젝트의 상위 계층 구조를 한눈에 파악하기 좋습니다.

tree -L 2 demo_project

tree -d demo_project 명령어는 일반 파일을 모두 제외하고 오직 디렉터리 목록만 계층 구조로 출력합니다.
파일 개수가 많은 환경에서도 프로젝트의 전체적인 폴더 트리 구조를 깔끔하게 파악할 수 있습니다.

tree -d demo_project

숨김 파일 표시(-a)와 파일 권한 및 용량 확인(-p, -h)

숨김 파일 조회 실습을 위해 touch demo_project/.env demo_project/.gitignore 명령어로 점(.)으로 시작하는 예제 설정 파일들을 생성합니다.

touch demo_project/.env demo_project/.gitignore

파일 권한 표시 실습을 위해 chmod 600 demo_project/.env 명령어를 실행하여 .env 파일의 접근 권한을 소유자 전용으로 변경합니다.

chmod 600 demo_project/.env

tree -a demo_project 명령어는 기본 출력에서 제외되는 점(.)으로 시작하는 숨김 파일을 포함하여 전체 구조를 시각화합니다.
출력 결과를 통해 루트 경로에 위치한 .env와 .gitignore 파일이 트리 목록에 정상적으로 표시되는 것을 확인할 수 있습니다.

tree -a demo_project

tree -p -h demo_project 명령어는 각 항목의 파일 접근 권한(-p)과 사람이 읽기 쉬운 용량 단위(-h)를 함께 표시합니다.
디렉터리 계층 구조와 함께 각 파일의 권한 설정 상태 및 용량 정보를 한눈에 직관적으로 점검할 수 있습니다.

tree -p -h demo_project

특정 패턴 필터링(-P, -I) 및 HTML 보고서 생성(-H, -o)

패턴 필터링 실습에 사용할 임시 로그 파일과 캐시 파일을 생성하기 위해 touch demo_project/temp.log demo_project/debug.tmp 명령어를 실행합니다.

touch demo_project/temp.log demo_project/debug.tmp

tree -P "*.py" demo_project 명령어는 지정한 와일드카드 패턴과 일치하는 파이썬(.py) 파일만 포함하여 계층 구조를 시각화합니다.
특정 확장자를 가진 파일만 선별하여 보여주므로 소스 코드 파일의 배치 현황을 집중적으로 파악할 때 유용합니다.

tree -P “*.py” demo_project

tree -I "*.tmp|*.log" demo_project 명령어는 파이프(|) 기호로 지정한 제외 패턴과 일치하는 임시 파일들을 트리 출력에서 숨깁니다.
불필요한 로그나 임시 파일들을 걸러내어 프로젝트 본래의 핵심 소스 및 문서 구조만 깔끔하게 확인할 수 있습니다.

tree -I “.tmp|.log” demo_project

tree -H http://localhost -o demo_project/structure.html demo_project 명령어는 디렉터리 트리 결과를 클릭 가능한 링크가 포함된 HTML 웹 문서로 변환하여 파일로 저장합니다.
지정한 기본 URL(http://localhost)을 기반으로 파일 링크가 구성되므로 웹 브라우저를 통한 시각화 및 문서 보고서로 활용하기 좋습니다.

tree -H http://localhost -o demo_project/structure.html demo_project

생성된 HTML 보고서의 내부 마크업 구조와 메타데이터 형식을 확인하기 위해 head -n 15 demo_project/structure.html 명령어를 실행합니다.

head -n 15 demo_project/structure.html

지금까지 우분투 환경에서 tree 명령어로 디렉터리 구조를 시각화하고 실무에 유용하게 활용하는 방법들을 살펴보았습니다.
필요한 옵션들을 적절히 조합해 복잡한 폴더 구조를 한눈에 파악하고 깔끔하게 문서화해 보세요.