답변:
tree
macOS에서도 명령을 얻을 수 있습니다 . Homebrew 가있는 경우 다음을 실행하면됩니다.
brew install tree
자세한 내용은 계속 읽으십시오.
macOS 용 패키지 관리자가 몇 가지 있습니다. 가장 인기있는 것은 Homebrew , MacPorts 또는 Fink 입니다. 둘 중 하나를 설치할 수 있지만 Homebrew를 권장합니다. 동시에 둘 이상을 설치하지 마십시오!
웹 사이트의 지시 사항을 따르고 선택한 패키지 관리자에 따라 다음 명령 중 하나를 실행하십시오.
Homebrew의 경우 :
brew install tree
MacPorts의 경우 :
sudo port install tree
핑크의 경우 :
fink install tree
패키지 관리자는 기본적으로 macOS와 함께 제공되지 않는 GNU / Linux를 포함한 다른 명령 행 프로그램을 제공합니다.
먼저을 실행하여 Xcode 명령 행 도구를 설치해야합니다 xcode-select --install
.
그런 다음 소스를 다운로드하십시오tree
. 그런 다음 Makefile을 변경하여 작동 시키십시오 . 아래 @apuche의 답변에 설명되어 있습니다 . Linux 옵션을 주석 처리하고 macOS 옵션을 주석 해제하면 충분합니다.
그런 다음, 실행 ./configure
한 후, make
.
이제 tree
바이너리 파일을 실행 경로에있는 위치 로 이동 해야합니다. 예를 들면 다음과 같습니다.
sudo mkdir -p /usr/local/bin
sudo cp tree /usr/local/bin/tree
이제 다음 ~/.bash_profile
을 포함하도록 편집하십시오 .
export PATH="/usr/local/bin:$PATH"
쉘을 다시로드하면 이제 which tree
를 가리켜 야합니다 /usr/local/bin/tree
.
./configure
하고 make
정확하게 무엇을해야하는지 , 왜 처음에 그들이 필요한지 를 이해하려고 노력합니다 . 또는 그들은 그것을 다루고 싶지 않습니다. 또는 해당 문제에 대한 도움말 파일을 읽으십시오. 그들은 오히려 같은 것을하고 싶습니다 apt-get install
. 소스에서 설치하는 것을 선호한다면 괜찮습니다 (개인적으로도 마찬가지입니다).하지만 다른 사람들, 또는 대부분의 일반 컴퓨터 사용자가 더 쉽게 인식하는 솔루션이 있다는 것을 인정해야합니다.
./configure
하고 make
수행하십시오. 소프트웨어를 설치하기 위해 수행해야 할 단계라는 것을 알고 있습니다. 나는 README와 INSTALL 파일을 맹목적으로 읽었으며 그 내용에 상관없이 모든 작업을 수행합니다.
grep
있습니다. 같은 tree | grep -v 'json'
또는 유사한.
정확히 동일하지는 않지만 Mac에서 빠른 방법은 다음과 같습니다.
find .
그리고 그게 다야. 현재 디렉토리의 모든 파일 경로를 목록으로 나열합니다.
find . -type f
find . -type d -maxdepth 2
나를 위해 일한
find *
숨겨진 파일과 디렉토리를 보지 않으려면 더 잘 사용 하십시오. tree
숨겨진 파일 및 디렉토리는 기본적으로 표시되지 않습니다.
find
万金油 도구입니다.
또는 관리자는 당신이 중 하나를 설치하지 않을 경우 brew
, fink
, port
당신은 항상 소스를 만들 수있는 도구를 :
curl -O ftp://mama.indstate.edu/linux/tree/tree-1.5.3.tgz
tar xzvf tree-1.5.3.tgz
cd tree-1.5.3/
ls -al
리눅스 부분을 주석 처리하고 osx 영역의 주석을 해제하려면 Makefile을 편집하십시오 :
# Linux defaults:
#CFLAGS=-ggdb -Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
#CFLAGS=-O2 -Wall -fomit-frame-pointer -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
#LDFLAGS=-s
# Uncomment for OS X:
CC=cc
CFLAGS=-O2 -Wall -fomit-frame-pointer -no-cpp-precomp
LDFLAGS=
XOBJS=strverscmp.o
그리고 당신이 그것을하고있는 동안, 트리가 항상 출력을 채색하도록 강제하려면 항상 파일 의 main
메소드를 편집하고 전에 tree.c
추가 할 수 있습니다force_color=TRUE;
setLocale(LC_TYPE,"");
마지막으로 히트 make
하면 tree
Mac 용 빌드가 완료됩니다 .
공물은 자신의 블로그에 자신의 원래 게시물을 위해 숀 채프먼 에게 간다 .
force_color = TRUE;
. 세미콜론이없고 컴파일 오류가 발생합니다.
setLocale
했습니다 setlocale
. 그래서에서 tree.c
, 당신은 찾는다 setlocale(LC_TYPE,"")
; 그리고 감사합니다!
/bin
(또는 전 세계적으로 사용할 수있는 경로) 에 대한 메모를 추가 할 수 있습니까 ?
warning: format specifies type 'long' but the argument has type 'long long'
. 수정은 형식 지정자를에서로 변경하는 것이 었 %9ld
습니다 %9lld
.
공식적인 tree
명령은 없지만 다음과 같이 할 수 있습니다.
다음 스크립트를 / usr / local / bin / tree에 저장하십시오
#!/bin/bash
SEDMAGIC='s;[^/]*/;|____;g;s;____|; |;g'
if [ "$#" -gt 0 ] ; then
dirlist="$@"
else
dirlist="."
fi
for x in $dirlist; do
find "$x" -print | sed -e "$SEDMAGIC"
done
실행할 수 있도록 권한을 변경하십시오.
chmod 755 /usr/local/bin/tree
물론 다음을 만들어야 할 수도 있습니다 /usr/local/bin
.
sudo mkdir -p /usr/local/bin/tree
tree
되었지만 여전히 멋진 솔루션입니다.
OSX El Capitan 루트리스 기능에 대한 @apuche의 답변 에 작은 요점 추가 . 디렉토리 에 쓸 수 없으므로 실패합니다 .make install
/usr/bin
vikas@MBP:~/Downloads/tree-1.7.0$ sudo make install
Password:
install -d /usr/bin
install: chmod 755 /usr/bin: Operation not permitted
install -d /usr/share/man/man1
if [ -e tree ]; then \
install tree /usr/bin/tree; \
fi
install: /usr/bin/tree: Operation not permitted
make: *** [install] Error 71
vikas@MBP:~/Downloads/tree-1.7.0$
이 문제를 극복하기 위해, 그냥 편집 Makefile
해야 할prefix = /usr/local
./configure --prefix=/usr/local
실행하기 전에 make
그리고 make install
그것은 동일한 결과를 얻을 것입니다.
간단한 해결책을 찾았습니다 : http://murphymac.com/tree-command-for-mac/
그래서 당신에 다음을 추가 .bashrc
, .bash_profile
또는 기타 장소는 작동 할 것입니다 :
alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
이제 tree
명령을 추가 하면 다음과 같이 인쇄됩니다 :
# ~/my-html-app [13:03:45]$ tree
.
|____app.js
|____css
| |____main.css
| |____theme.css
|____index.html
Terminal.app에서 사용하기 위해 ~ / .bash_profile에 다음을 추가했습니다. 찾기 사용 방법을 기억하는 데 도움이되는 일부 주석이 포함되어 있습니다.
##########
## tree ##
##########
## example ...
#|____Cycles
#| |____.DS_Store
#| |____CyclesCards.json
#| |____Carbon
#| | |____Carbon.json
# alternate: alias tree='find . -print | sed -e "s;[^/]*/;|____;g;s;____|; |;g"'
# use$ tree ; tree . ; tree [some-folder-path]
function tree {
find ${1:-.} -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
}
현재 디렉토리의 예
$> tree
일부 경로의 예
$> tree /some/path
다음은 유용한 메타 데이터와 함께 멋진 유니 코드 트리를 생성하는 Ruby 스크립트 솔루션입니다.
#!/usr/bin/env ruby
def tree_hierarchy( root, &children )
queue = [[root,"",true]]
[].tap do |results|
until queue.empty?
item,indent,last = queue.pop
kids = children[item]
extra = indent.empty? ? '' : last ? '└╴' : '├╴'
results << [ indent+extra, item ]
results << [ indent, nil ] if last and kids.empty?
indent += last ? ' ' : '│ '
parts = kids.map{ |k| [k,indent,false] }.reverse
parts.first[2] = true unless parts.empty?
queue.concat parts
end
end
end
def tree(dir)
cols = tree_hierarchy(File.expand_path(dir)) do |d|
File.directory?(d) ? Dir.chdir(d){ Dir['*'].map(&File.method(:expand_path)) } : []
end.map do |indent,path|
if path
file = File.basename(path) + File.directory?(path) ? '/' : ''
meta = `ls -lhd "#{path}"`.split(/\s+/)
[ [indent,file].join, meta[0], meta[4], "%s %-2s %s" % meta[5..7] ]
else
[indent]
end
end
maxs = cols.first.zip(*(cols[1..-1])).map{ |c| c.compact.map(&:length).max }
tmpl = maxs.map.with_index{ |n,i| "%#{'-' if cols[0][i][/^\D/]}#{n}s" }.join(' ')
cols.map{ |a| a.length==1 ? a.first : tmpl % a }
end
puts tree(ARGV.first || ".") if __FILE__==$0
meta = …
행을 수정하여 표시 할 다른 메타 데이터를 추출하여 다음 행에서 분할 조각을 수동으로 선택할 수 있습니다. 약간의 작업으로 임의의 ls 인수를 전달하여 표시 할 메타 데이터를 선택할 수 있습니다.
샘플 출력 (Stack Overflow의 글꼴보다 OS X 터미널에서 더 좋아 보입니다) :
phrogz$ tree UCC_IVI/
UCC_IVI/ drwxr-xr-x 510B Nov 20 11:07
├╴docs/ drwxr-xr-x 102B Nov 20 19:21
│ └╴CANMessages.txt -rwxr-xr-x 2.2K Nov 20 19:21
│
├╴effects/ drwxr-xr-x 204B Nov 19 17:19
│ ├╴Depth Of Field HQ Blur.effect -rwxr-xr-x 2.4K Nov 19 17:19
│ ├╴FXAA.effect -rwxr-xr-x 1.6K Nov 17 15:38
│ ├╴HDRBloomTonemap.effect -rwxr-xr-x 11K Nov 17 15:38
│ └╴SMAA1X.effect -rwxr-xr-x 4.4K Nov 19 17:19
│
├╴fonts/ drwxr-xr-x 136B Nov 17 15:38
│ ├╴Arimo-Regular.ttf -rwxr-xr-x 43K Nov 17 15:38
│ └╴OFL.txt -rwxr-xr-x 4.3K Nov 17 15:38
│
├╴maps/ drwxr-xr-x 238B Nov 19 17:19
│ ├╴alpha-maps/ drwxr-xr-x 136B Nov 17 15:38
│ │ ├╴rounded-boxes-3.png -rwxr-xr-x 3.6K Nov 17 15:38
│ │ └╴splatter-1.png -rwxr-xr-x 35K Nov 17 15:38
│ │
│ ├╴effects/ drwxr-xr-x 136B Nov 19 17:19
│ │ ├╴AreaTex-yflipped.dds -rwxr-xr-x 175K Nov 19 17:19
│ │ └╴SearchTex-yflipped.png -rwxr-xr-x 180B Nov 19 17:19
│ │
│ ├╴IBL/ drwxr-xr-x 136B Nov 17 15:38
│ │ ├╴028-hangar.hdr -rwxr-xr-x 1.5M Nov 17 15:38
│ │ └╴FieldAirport.hdr -rwxr-xr-x 1.5M Nov 17 15:38
│ │
│ ├╴icons/ drwxr-xr-x 238B Nov 19 17:19
│ │ ├╴icon_climate.dds -rwxr-xr-x 683K Nov 19 17:19
│ │ ├╴icon_music.dds -rwxr-xr-x 683K Nov 19 17:19
│ │ ├╴icon_navigation.dds -rwxr-xr-x 683K Nov 19 17:19
│ │ ├╴icon_phone.dds -rwxr-xr-x 683K Nov 19 17:19
│ │ └╴icon_surroundView.dds -rwxr-xr-x 683K Nov 19 17:19
│ │
│ └╴materials/ drwxr-xr-x 102B Nov 19 17:19
│ └╴spherical_checker.png -rwxr-xr-x 11K Nov 19 17:19
│
├╴materials/ drwxr-xr-x 102B Nov 19 17:19
│ └╴thin_glass_refractive.material -rwxr-xr-x 6.0K Nov 19 17:19
│
├╴models/ drwxr-xr-x 136B Nov 19 17:19
│ ├╴BokehParticle/ drwxr-xr-x 136B Nov 19 17:19
│ │ ├╴BokehParticle.import -rwxr-xr-x 739B Nov 19 17:19
│ │ └╴meshes/ drwxr-xr-x 102B Nov 19 17:19
│ │ └╴Mesh.mesh -rwxr-xr-x 1.1K Nov 19 17:19
│ │
│ └╴Glass_Button/ drwxr-xr-x 136B Nov 19 17:19
│ ├╴Glass_Button.import -rwxr-xr-x 1.2K Nov 19 17:19
│ └╴meshes/ drwxr-xr-x 136B Nov 19 17:19
│ ├╴GlassButton.mesh -rwxr-xr-x 44K Nov 19 17:19
│ └╴Icon.mesh -rwxr-xr-x 1.8K Nov 19 17:19
│
├╴scripts/ drwxr-xr-x 204B Nov 19 17:19
│ ├╴App.lua -rwxr-xr-x 764B Nov 17 15:38
│ ├╴CANSim.lua -rwxr-xr-x 29K Nov 17 15:38
│ ├╴ObjectWiggler.lua -rwxr-xr-x 3.7K Nov 19 17:19
│ └╴PathWiggler.lua -rwxr-xr-x 2.9K Nov 17 15:38
│
├╴states/ drwxr-xr-x 170B Nov 19 18:45
│ ├╴app-camera.scxml -rwxr-xr-x 2.4K Nov 20 11:07
│ ├╴app-navigation.scxml -rwxr-xr-x 590B Nov 19 18:32
│ └╴logic.scxml -rwxr-xr-x 4.2K Nov 19 18:59
│
├╴tests/ drwxr-xr-x 102B Nov 17 15:38
│ └╴interface-navigation.scxml-test -rwxr-xr-x 83B Nov 17 15:38
│
├╴UCC_IVI.uia -rwxr-xr-x 630B Nov 19 17:32
├╴UCC_IVI.uia-user -rwxr-xr-x 832B Nov 20 17:22
├╴UCC_IVI.uip -rwxr-xr-x 1.5K Nov 17 15:38
└╴UCC_Menu.uip -rwxr-xr-x 33K Nov 19 17:19
게임에 늦었지만 같은 질문이있었습니다. 작업장 제한으로 인해 소스 또는 타사 패키지 관리자를 통해 패키지를 설치할 수 없습니다.
이것은 내 구현입니다.
# Faux tree command in OS X
#####################################################################
# tree
# Recursive directory/file listing of present working directory
#
# tree /Users/foo/foo_dir
# Recursive directory/file listing of named directory, e.g foo_dir
#
# tree /System/Library/ 2
# Recursive directory/file listing of named directory,
# with-user defined depth of recursion, e.g. 2
#####################################################################
tree ()
{
[ -n "$2" ] && local depth="-maxdepth $2";
find "${1:-.}" ${depth} -print 2> /dev/null | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
}
/Users/foo/.profile
또는에 기능을 추가 한 .bash_profile
후 다음을 사용하여 프로파일을 새로 고치십시오 source .profile
.source .bash_profile