เอาต์พุตคำสั่ง“ tree” พร้อมเอาต์พุต ASCII“ pure” (7 บิต)


44

คำสั่ง "tree" ใช้อักขระวาดรูปกล่องสวย ๆ เพื่อแสดง tree แต่ฉันต้องการใช้ผลลัพธ์ในบริบท "code-page-neutral" (ฉันรู้ว่าจริงๆแล้วมันมีหน้ารหัสอยู่เสมอ แต่โดยการ จำกัด ให้อยู่ด้านล่าง ตัวละครฉันหวังว่าจะเป็นอิสระจากความกังวลว่าบางคนในอูลานบาตอร์จะเห็นใบหน้าที่ยิ้มแย้มและอื่น ๆ )

ตัวอย่างเช่นแทน:

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

ฉันต้องการบางสิ่งเช่น:

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

แต่ไม่มีการสลับชุด "ต้นไม้" ที่ฉันลองทำสิ่งนี้ (ดูราวกับว่าพวกเขาใช้ตัวอักษรแบบกล่องเป็นพื้นฐานและทำให้มันสวยกว่า)

ฉันยังค้นหาตัวกรองแบบวาดกล่องเพื่อทำการแปลงโดยไม่ต้องค้นหาอะไรเลยนอกจาก ASCII art :-) ตัวกรองทั่วไปมีกลิ่นเหมือนบางสิ่งบางอย่างที่จะทำให้สุกใน 15 นาที - บวกอีกสองวันที่เพิ่มขึ้นสะดุดลงในทุกกรณีมุมที่น่าขบขัน :-)


ขอบคุณสำหรับคำถาม ฉันต้องการสิ่งนี้เพื่อที่ฉันจะได้เอาท์พุตของทรีลงใน enscript เพื่อรับ contol ของการจัดรูปแบบการพิมพ์ (โดยใช้ dprint / dprintm จากแพ็คเกจพิมพ์สองหน้าของฉันsourceforge.net/projects/duplexpr/ )
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ไม่มี Unix treeไม่มี treePOSIX เพียงtreeการดำเนินการฉันรู้คือmama.indstate.edu/users/ice/tree
Stéphane Chazelas

3
@StephaneChazelas ขอบคุณดังนั้น--charsetตัวเลือกควรพร้อมใช้งานเสมอ แก้ไขคำตอบแล้ว
terdon

Splendid! (โดยเฉพาะอย่างยิ่งรุ่น sed - สำหรับฉัน sed เป็นดินแดนป่าเกินชายแดน awk)
Tom Goodfellow

1
ฉันชอบตัวเลือก tree --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 ให้คำตอบที่สมบูรณ์ยิ่งขึ้นในขณะที่ฉันเขียน Mine;)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.