디렉토리 구조를 트리 형태로 인쇄하는 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;
}}'