"순수한"(7 비트) ASCII 출력을 사용하는 "트리"명령 출력


44

"tree"명령은 멋진 상자 그리기 문자를 사용하여 트리를 표시하지만 "code-page-neutral"컨텍스트에서 출력을 사용하려고합니다 (실제로 항상 코드 페이지가 있지만 하위로 제한하여 알고 있음) Ulan Bator의 누군가가 웃는 얼굴 등을 볼 염려가 없어지기를 바랍니다).

예를 들면 다음과 같습니다.

├── include
│   ├── foo
│   └── bar

나는 다음과 같은 것을 원한다 :

+-- include
|   +-- foo
|   \-- bar

그러나 내가 시도한 "트리"스위치 조합 중 어느 것도 이것을주지 않았습니다 (상자 그리기 문자를 기준으로 사용하고 더 예쁘게 만드는 것처럼 보입니다)

또한 무한한 ASCII 아트 이외의 것을 찾지 않고도 이러한 변환을 수행하는 상자 그리기 필터를 찾았습니다. 일반적인 필터는 15 분 안에 요리 할 것 같은 냄새가납니다-또한 모든 재미있는 코너 케이스에 쓰러지는 2 일의 추가 일이 있습니다 :-)


질문 주셔서 감사합니다. 트리 포맷을 enscript로 파이프하여 인쇄 형식을 제어 할 수 있도록하기 위해 필요했습니다 (duplexpr 패키지 sourceforge.net/projects/duplexpr/의 dprint / dprintm 사용 )
Joe

답변:


59

확실하지 않지만 필요한 것은

tree | sed 's/├/\+/g; s/─/-/g; s/└/\\/g'

예를 들면 다음과 같습니다.

$ tree
.
├── file0
└── foo
    ├── bar
    │   └── file2
    └── file1

2 directories, 3 files
$ tree | sed 's/├/\+/g; s/─/-/g; s/└/\\/g'
.
+-- file0
\-- foo
    +-- bar
    │   \-- file2
    \-- file1

2 directories, 3 files

또는 다음 --charset옵션을 사용할 수 있습니다 .

$ tree --charset=ascii
.
|-- file0
`-- foo
    |-- bar
    |   `-- file2
    `-- file1

2 directories, 3 files

GNU도없고 tree, 유닉스 tree도없고, POSIX도 없습니다 tree. tree내가 아는 유일한 구현은 mama.indstate.edu/users/ice/tree 입니다.
Stéphane Chazelas

3
@StephaneChazelas 덕분에 --charset항상 옵션을 사용할 수 있어야합니다. 답변이 수정되었습니다.
terdon

화려한! (특히 sed 버전-나를 위해 sed는 awk 국경 너머의 야생 땅입니다)
Tom Goodfellow

1
나는 나무 --charset = ascii 옵션, 감사합니다
ling

4
실제로 나는 --charset옵션이 먼저 언급되어야 한다고 생각한다 – 대안을 사용하는 sed것은 유익하지만 더 복잡하다 ...
rob74

30

무엇에 대해 tree --charset unicode?

|-- boot_print
|   |-- config-2.6.32-5-amd64
|   |-- grub
|   |   |-- 915resolution.mod
|   |   |-- acpi.mod
|   |   |-- affs.mod
|   |   |-- afs_be.mod
|   |   |-- afs.mod
|   |   |-- aout.mod
|   |   |-- ata.mod
|   |   |-- ata_pthru.mod
|   |   |-- at_keyboard.mod
|   |   |-- befs_be.mod
|   |   |-- befs.mod
|   |   |-- biosdisk.mod
|   |   |-- bitmap.mod
|   |   |-- bitmap_scale.mod
|   |   |-- blocklist.mod
|   |   |-- boot.img

2
그것은 동일합니다tree --charset nwildner
Stéphane Chazelas

예. 다른 답변은 편집되었으므로 @terdon이 내 글을 쓰는 동안 더 완전한 답변을 제공한다는 것을 알지 못했습니다.)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.