Der Befehl „tree“ verwendet nette Box-Zeichen, um den Baum anzuzeigen, aber ich möchte die Ausgabe verwenden in einem „Codepage-neutralen“ Kontext (ich weiß, dass es wirklich immer eine Codepage gibt, aber wenn ich sie auf die niedrigeren Zeichen beschränke, hoffe ich, dass ich keine Sorgen habe, dass jemand in Ulan Bator Smileys usw. sieht).
Zum Beispiel anstelle von:
├── include │ ├── foo │ └── bar
Ich hätte gerne etwas wie:
+-- include | +-- foo | \-- bar
, aber keine der von mir versuchten „Baum“ -Schalterkombinationen gab dies an (es scheint eher so, als würden sie die Zeichen für das Zeichnen von Kästchen als Grundlinie nehmen und sie noch schöner machen)
Ich auch suchte nach Box-Drawing-Filtern, um solche Konvertierungen durchzuführen, ohne etwas zu finden, das über eine unendliche Menge an ASCII-Kunst hinausgeht :-). Ein generischer Filter riecht nach etwas, das in 15 Minuten zubereitet werden muss – plus zwei weitere inkrementelle Tage, die in alle amüsanten Eckfälle stolpern 🙂
Kommentare
- Danke für die Frage. Ich brauchte dies, damit ich die Ausgabe des Baums in ein Enscript leiten konnte, um die Druckformatierung zu steuern (mit dprint / dprintm aus meinem duplexpr-Paket sourceforge.net/projects/duplexpr/). )
Antwort
Ich bin mir nicht sicher, aber ich denke, alles was Sie brauchen ist
tree | sed "s/├/\+/g; s/─/-/g; s/└/\\/g"
Zum Beispiel:
$ 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
Alternativ können Sie die --charset
Option:
$ tree --charset=ascii . |-- file0 `-- foo |-- bar | `-- file2 `-- file1 2 directories, 3 files
Kommentare
- Dort ' s kein GNU
tree
, es gibt ' kein Unixtree
, es gibt ' kein POSIXtree
. Die einzigetree
Implementierung I ' Ich bin mir bewusst, dass mama.indstate.edu/users/ice/tree . - @StephaneChazelas danke, also die Option
--charset
sollte dann immer verfügbar sein. Antwort bearbeitet. - Herrlich! (besonders die sed-Version – für mich ist sed das wilde Land jenseits der awk-Grenze)
- Ich mag die Option tree –charset = ascii, danke
- Eigentlich denke ich, dass die
--charset
sollte zuerst erwähnt werden – die Alternative mitsed
ist lehrreich, aber komplizierter …
Antwort
Was ist mit 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
Kommentare
- Das ' entspricht
tree --charset nwildner
- Yup. Die andere Antwort wurde so bearbeitet, dass ich ´ nicht bemerkt habe, dass @terdon eine vollständigere Antwort gegeben hat, während ich meine geschrieben habe;)