[linux] 트리 형태로 디렉토리 구조를 인쇄하는 Linux 명령

디렉토리 구조를 트리 형태로 인쇄하는 Bash 스크립트에서 호출 할 수있는 Linux 명령이 있습니까?

folder1
   a.txt
   b.txt
folder2
   folder3



답변

이것이 당신이 찾고있는 나무 입니까? 대부분의 배포판에 있어야합니다 (선택적 설치 일 수 있음).

~> tree -d /proc/self/
/proc/self/
|-- attr
|-- cwd -> /proc
|-- fd
|   `-- 3 -> /proc/15589/fd
|-- fdinfo
|-- net
|   |-- dev_snmp6
|   |-- netfilter
|   |-- rpc
|   |   |-- auth.rpcsec.context
|   |   |-- auth.rpcsec.init
|   |   |-- auth.unix.gid
|   |   |-- auth.unix.ip
|   |   |-- nfs4.idtoname
|   |   |-- nfs4.nametoid
|   |   |-- nfsd.export
|   |   `-- nfsd.fh
|   `-- stat
|-- root -> /
`-- task
    `-- 15589
        |-- attr
        |-- cwd -> /proc
        |-- fd
        | `-- 3 -> /proc/15589/task/15589/fd
        |-- fdinfo
        `-- root -> /

27 directories

관리자의 웹 페이지에서 가져온 샘플.

당신은 옵션을 추가 할 수 있습니다 최대 재귀 깊이를 지정하는 숫자로 대체됩니다.-L ##

-d파일도 표시하려면 제거하십시오 .


답변

이것을 사용할 수 있습니다 :

ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'

다음 과 같이 몇 초 안에 파일 없는 현재 하위 디렉토리의 그래픽 표현이 표시 됩니다 /var/cache/.

   .
   |-apache2
   |---mod_cache_disk
   |-apparmor
   |-apt
   |---archives
   |-----partial
   |-apt-xapian-index
   |---index.1
   |-dbconfig-common
   |---backups
   |-debconf

출처


답변

.bashrc에 Hassou의 솔루션을 추가하려면 다음을 시도하십시오.

alias lst='ls -R | grep ":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/   /'"'"' -e '"'"'s/-/|/'"'"


답변

이 명령은 폴더와 파일을 모두 표시합니다 .

find . | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"

출력 예 :

.
 |-trace.pcap
 |-parent
 | |-chdir1
 | | |-file1.txt
 | |-chdir2
 | | |-file2.txt
 | | |-file3.sh
 |-tmp
 | |-json-c-0.11-4.el7_0.x86_64.rpm

출처 : @javasheriff에서 코멘트 여기 . 댓글로 잠기고 답변으로 게시하면 사용자가 쉽게 확인할 수 있습니다.


답변

@Hassou의 답변 출력을 확인하고 있습니다.

ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//──/g' -e 's/─/├/' -e '$s/├/└/'

이것은 tree지금 의 결과와 매우 유사합니다 .

.
├─pkcs11
├─pki
├───ca-trust
├─────extracted
├───────java
├───────openssl
├───────pem
├─────source
├───────anchors
├─profile.d
└─ssh

별명을 만들 수도 있습니다.

alias ltree=$'ls -R | grep ":$" | sed -e \'s/:$//\' -e \'s/[^-][^\/]*\//──/g\' -e \'s/─/├/\' -e \'$s/├/└/\''

BTW tree는 MinGW와 같은 일부 환경에서는 사용할 수 없습니다. 따라서 대안이 도움이됩니다.


답변

find와 awk 명령을 조합하여 디렉토리 트리를 인쇄 할 수도 있습니다. 자세한 내용 “을 참조하시기 바랍니다 어떻게 리눅스 찾기를 사용하여 멀티 레벨 트리 디렉토리 구조를 인쇄하고 결합 명령을 awk가

find . -type d | awk -F'/' '{
depth=3;
offset=2;
str="|  ";
path="";
if(NF >= 2 && NF < depth + offset) {
    while(offset < NF) {
        path = path "|  ";
        offset ++;
    }
    print path "|-- "$NF;
}}'


답변