Auf der Suche nach einer Möglichkeit den Verzeichnisbaum unterhalb eines bestimmten Verzeichnisses aufzulisten bin ich hier auf gleich zwei schöne Möglichkeiten gestolpert:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
und
find ./ -type d | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/'
Die zweite Variante habe ich mir in eine Bash Funktion in meiner .bashrc gepackt und noch einen Parameter hinzugefügt, dass ich das Ausgangsverzeichnis einfach mitgeben kann und nicht erst in das Verzeichnis wechseln muss:
function tree() {
[[ -z "$1" ]] && p='.' || p=$1
find ${p} -type d | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/'
}
Damit habe ich die tree Funktion immer dabei und bekomme z.B. mit
# tree /etc/apache2
die folgende Ausgabe:
|---apache2
|-----extra
|-----original
|-------extra
|-----other
|-----users