본문으로 바로가기

: tree 명령은 디렉토리 안의 내용을 나무형식으로 리스트시 사용합니다.

Manual page

예제 1 > tree

>> du_test 디렉토리에 2개의 파일( du_1.txt , du_2.txt) 과

1개의 subdrictory (du_dir) 가 있습니다.

du_dir 안에 1개의 파일(du_sub1.txt) 이 있습니다.

예제 2>

다음의 tree 내용중 sub1 과 sub3의 내용만 출력하기

$ tree

$ tree sub1 sub3

--> 심볼릭 링크는 -> 로 보여줍니다.

 

 

 

0> 도표

옵션
의미
기타
-d
디렉토리만 리스트
1-1번 항목 참조
-a
모든파일 리스트
1-2번 항목 참조
-f
표시되는 파일의 전체경로 표시
1-3번 항목 참조
-L
디렉토리 depth 설정
1-4번 항목 참조
-P
 
1-5번 항목 참조
-I
 
1-6번 항목 참조
--prune
텅빈 디렉토리 리스트 안함.
1-7번 항목 참조
-p
파일의 타입및 퍼미션 출력
1-8번 항목 참조
-u
사용자(username) 출력
1-9번 항목 참조
-h
파일의 사이즈 출력 (human readable)
1-10번 항목 참조
-s
파일의 사이즈 출력
1-11번 항목 참조
--du
디렉토리에 대한 실제 크기 출력
1-12번 항목 참조
-o
출력을 파일로 전송
1-13번 항목 참조

 

1> 옵션

1-1> -d 옵션

: 디렉토리 리스트 출력

 

$ tree -d .
.
├── cat_test
├── cp_test
│   ├── sub1
│   ├── sub2
│   ├── sub3
│   └── sub4
├── du_test
│   └── du_dir
├── fileTest
│   └── fileDir
├── gitTest
│   ├── old
│   └── old2
├── gitTest_stash
├── grepTest
├── inode_test
└── sortTest

 

 

1-2> -a 옵션

: 숨김파일 포함 모든 파일 표시

리눅스 에서 숨김 파일에 대한 별도로 없고 '.' 으로 시작하면 기본적으로 보이지 않습니다.)

1-3> -f 옵션

: 전체경로 포함해서 출력

1-4> -L 옵션

: 디렉토리 깊이 설정

 

level 값을 변경해 출력해 봤습니다.

tree 명령 depth 3 , 2 일때의 결과
 
$tree
.
├── sub_tree1
│   ├── ssub_tree1
│   │   ├── sssub_tree1
│   │   └── sssub_tree2
│   ├── ssub_tree2
│   └── tree3.txt
├── sub_tree2
│   └── tree4.txt
├── tree1.txt
└── tree2.txt

6 directories, 4 files

$tree -L 1
.
├── sub_tree1
├── sub_tree2
├── tree1.txt
└── tree2.txt

2 directories, 2 files

$tree -L 2
.
├── sub_tree1
│   ├── ssub_tree1
│   ├── ssub_tree2
│   └── tree3.txt
├── sub_tree2
│   └── tree4.txt
├── tree1.txt
└── tree2.txt

4 directories, 4 files

t$tree -L 3
.
├── sub_tree1
│   ├── ssub_tree1
│   │   ├── sssub_tree1
│   │   └── sssub_tree2
│   ├── ssub_tree2
│   └── tree3.txt
├── sub_tree2
│   └── tree4.txt
├── tree1.txt
└── tree2.txt

6 directories, 4 files

 

1-5> -P 옵션

: 패턴이 매칭되는 파일들을 리스트합니다. (디렉토리 (X))

 
$tree -P "tree*"
.
├── sub_tree1
│   ├── ssub_tree1
│   │   ├── sssub_tree1
│   │   └── sssub_tree2
│   ├── ssub_tree2
│   └── tree3.txt
├── sub_tree2
│   └── tree4.txt
├── tree1.txt
└── tree2.txt

6 directories, 4 files

>> tr 로 시작하고 다음에 아무 2글자 나오고 그뒤에 1 이 나오는 파일 검색
~/Temp/tree_test$tree -P "tr??1*"
.
├── sub_tree1
│   ├── ssub_tree1
│   │   ├── sssub_tree1
│   │   └── sssub_tree2
│   └── ssub_tree2
├── sub_tree2
└── tree1.txt

6 directories, 1 file

 

1-6> -I 옵션

: 선택된 파일들을 제외하고 리스트 합니다.

 
>> tree1 으로 시작하는 이름을 제외하고 리스트
~/Temp/tree_test$tree -I "tree1*"
.
├── sub_tree1
│   ├── ssub_tree1
│   │   ├── sssub_tree1
│   │   └── sssub_tree2
│   ├── ssub_tree2
│   └── tree3.txt
├── sub_tree2
│   └── tree4.txt
└── tree2.txt

 

1-7> --prune 옵션

: 텅빈 디렉토리 표시 안함

 
~/Temp/tree_test$tree
.
├── sub_tree1
│   ├── ssub_tree1
│   │   ├── sssub_tree1
│   │   └── sssub_tree2
│   ├── ssub_tree2
│   └── tree3.txt
├── sub_tree2
│   └── tree4.txt
├── tree1.txt
└── tree2.txt

>> 텅빈 디렉토리 출력 안함.
$tree --prune
.
├── sub_tree1
│   └── tree3.txt
├── sub_tree2
│   └── tree4.txt
├── tree1.txt
└── tree2.txt
​

 

 

1-8> -p 옵션

: 파일 타입과 퍼미션 출력

1-9> -u 옵션

: 유저이름 또는 UID 출력

1-10> -s 옵션

: 파일 사이즈 출력

 
~/Temp/tree_test$tree -s
.
├── [       4096]  sub_tree1
│   ├── [       4096]  ssub_tree1
│   │   ├── [       4096]  sssub_tree1
│   │   └── [       4096]  sssub_tree2
│   ├── [       4096]  ssub_tree2
│   └── [        606]  tree3.txt
├── [       4096]  sub_tree2
│   └── [          6]  tree4.txt
├── [          6]  tree1.txt
└── [          6]  tree2.txt

6 directories, 4 files

 

1-11> -h 옵션

: 인간이 읽기 쉽게 사이즈 정보 표시

 
~/Temp/tree_test$du -h
4.0K    ./sub_tree1/ssub_tree2
4.0K    ./sub_tree1/ssub_tree1/sssub_tree1
4.0K    ./sub_tree1/ssub_tree1/sssub_tree2
12K     ./sub_tree1/ssub_tree1
24K     ./sub_tree1
8.0K    ./sub_tree2
48K     .

 

1-12> --du 옵션

: 각각의 디렉토리에 대해서 안의 서브디렉토리와 파일의 크기를 합산해서 사이즈정보 출력

총크기는 "du -c " 명령과 동일

 

~/Temp/tree_test$tree --du
.
├── [      21086]  sub_tree1
│   ├── [      12288]  ssub_tree1
│   │   ├── [       4096]  sssub_tree1
│   │   └── [       4096]  sssub_tree2
│   ├── [       4096]  ssub_tree2
│   └── [        606]  tree3.txt
├── [       4102]  sub_tree2
│   └── [          6]  tree4.txt
├── [          6]  tree1.txt
└── [          6]  tree2.txt

>> sub_tree1 에대한 du -c 의 결과와 동일
~/Temp/tree_test$du -c -b sub_tree1
4096    sub_tree1/ssub_tree2
4096    sub_tree1/ssub_tree1/sssub_tree1
4096    sub_tree1/ssub_tree1/sssub_tree2
12288   sub_tree1/ssub_tree1
21086   sub_tree1
21086   total

 

 

1-13>-o 옵션

: 결과를 지정된 파일 이름으로 저장합니다.

~/Temp/tree_test$tree -h -a -p -o tree_out.txt

~/Temp/tree_test$cat tree_out.txt
.
├── [drwxrwxr-x 4.0K]  sub_tree1
│   ├── [drwxrwxr-x 4.0K]  ssub_tree1
│   │   ├── [drwxrwxr-x 4.0K]  sssub_tree1
│   │   └── [drwxrwxr-x 4.0K]  sssub_tree2
│   ├── [drwxrwxr-x 4.0K]  ssub_tree2
│   └── [-rw-rw-r--  606]  tree3.txt
├── [drwxrwxr-x 4.0K]  sub_tree2
│   └── [-rw-rw-r--    6]  tree4.txt
├── [-rw-rw-r--    6]  tree1.txt
├── [-rw-rw-r--    6]  tree2.txt
├── [-rw-rw-r--    6]  .tree_hidden.txt
└── [-rw-rw-r--    0]  tree_out.txt

6 directories, 6 files

 

 

< 기타 >

A> "[error opening dir]" 에러 수정

$tree -P tree*
tree2.txt [error opening dir]
tree_out.txt [error opening dir]

0 directories, 0 files

>> 패턴적용시 "" or ''을 사용해야 에러가 나오지 않습니다.
~/Temp/tree_test$tree -P "tree*"
.
├── sub_tree1
│   ├── ssub_tree1
│   │   ├── sssub_tree1
│   │   └── sssub_tree2
│   ├── ssub_tree2
│   └── tree3.txt
├── sub_tree2
│   └── tree4.txt
├── tree1.txt
├── tree2.txt
└── tree_out.txt

6 directories, 5 files
~/Temp/tree_test$

 

B>  tree 명령이 동작 안할 경우 

$ tree
Command 'tree' not found, but can be installed with:
sudo snap install tree  # version 1.8.0+pkg-3fd6, or
sudo apt  install tree  # version 2.0.2-1
See 'snap info tree' for additional versions.
$ sudo apt install tree
[sudo] password for xxx:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libcapstone4 libgpiod2 libhidapi-hidraw0 libjaylink0 libjim0.79 libusb-0.1-4
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  tree
0 upgraded, 1 newly installed, 0 to remove and 147 not upgraded.
Need to get 47.9 kB of archives.
After this operation, 116 kB of additional disk space will be used.
Get:1 http://kr.archive.ubuntu.com/ubuntu jammy/universe amd64 tree amd64 2.0.2-1 [47.9 kB]
Fetched 47.9 kB in 1s (53.6 kB/s)
Selecting previously unselected package tree.
(Reading database ... 252977 files and directories currently installed.)
Preparing to unpack .../tree_2.0.2-1_amd64.deb ...
Unpacking tree (2.0.2-1) ...
Setting up tree (2.0.2-1) ...
Processing triggers for man-db (2.10.2-1) ...

 

도움이 되셨다면  하트 선사 부탁드려요. 
그럼 수고하세요.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형