Gibt es einen Linux-Befehl, den ich von einem Bash-Skript aus aufrufen kann, der die Verzeichnisstruktur in Form eines Baums ausgibt, z. B.,
folder1
a.txt
b.txt
folder2
folder3
Gibt es einen Linux-Befehl, den ich von einem Bash-Skript aus aufrufen kann, der die Verzeichnisstruktur in Form eines Baums ausgibt, z. B.,
folder1
a.txt
b.txt
folder2
folder3
Ist es das, wonach Sie suchen? Baum ? Es sollte in den meisten Distributionen enthalten sein (vielleicht als optionale Installation).
~> tree -d /proc/self/
/proc/self/
|-- attr
|-- cwd -> /proc
|-- fd
| `-- 3 -> /proc/15589/fd
|-- fdinfo
|-- net
| |-- dev_snmp6
| |-- netfilter
| |-- rpc
| | |-- auth.rpcsec.context
| | |-- auth.rpcsec.init
| | |-- auth.unix.gid
| | |-- auth.unix.ip
| | |-- nfs4.idtoname
| | |-- nfs4.nametoid
| | |-- nfsd.export
| | `-- nfsd.fh
| `-- stat
|-- root -> /
`-- task
`-- 15589
|-- attr
|-- cwd -> /proc
|-- fd
| `-- 3 -> /proc/15589/task/15589/fd
|-- fdinfo
`-- root -> /
27 directories
Beispiel von der Webseite des Betreibers.
Sie können die Option hinzufügen -L #
donde #
wird durch eine Zahl ersetzt, um die maximale Rekursionstiefe anzugeben.
entfernen -d
um auch Dateien anzuzeigen.
Sie können diese verwenden:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
Es wird eine grafische Darstellung der aktuellen Unterverzeichnisse ohne Dateien angezeigt in ein paar Sekunden z.B. in /var/cache/ :
.
|-apache2
|---mod_cache_disk
|-apparmor
|-apt
|---archives
|-----partial
|-apt-xapian-index
|---index.1
|-dbconfig-common
|---backups
|-debconf
Dieser Befehl funktioniert wie folgt sowohl Ordner als auch Dateien anzeigen .
find . | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
Beispielhafte Ausgabe:
.
|-trace.pcap
|-parent
| |-chdir1
| | |-file1.txt
| |-chdir2
| | |-file2.txt
| | |-file3.sh
|-tmp
| |-json-c-0.11-4.el7_0.x86_64.rpm
Quelle: Kommentar von @javasheriff aquí . Es ist als Kommentar untergetaucht und die Veröffentlichung als Antwort hilft den Benutzern, es leicht zu erkennen.
Da ich mit der Ausgabe anderer (Nicht-) Programme nicht sehr zufrieden war, habe ich tree
) Antworten (siehe mein Kommentar zur Antwort von Hassou ), habe ich versucht zu imitieren tree
s-Ausgang ein wenig mehr.
Es ist ähnlich wie bei der Antwort von Robert, aber die horizontalen Linien beginnen nicht alle am Anfang, sondern dort, wo sie beginnen sollen. Musste verwenden perl
aber in meinem Fall, auf dem System, auf dem ich keine tree
, perl
ist verfügbar.
ls -aR | grep ":$" | perl -pe 's/:$//;s/[^-][^\/]*\// /g;s/^ (\S)/ \1/;s/(^ | (?= ))/ /g;s/ (\S)/ \1/'
Ausgabe (gekürzt):
.
fd
net
dev_snmp6
nfsfs
rpc
auth.unix.ip
stat
vlan
ns
task
1310
net
dev_snmp6
rpc
auth.unix.gid
auth.unix.ip
stat
vlan
ns
Vorschläge zur Vermeidung der überflüssigen vertikalen Linien sind willkommen :-)
Ich mag immer noch Bens Lösung im Kommentar von Hassous Antwort sehr viel, ohne die (nicht ganz korrekten) Zeilen ist es viel sauberer. Für meinen Anwendungsfall habe ich zusätzlich die globale Einrückung entfernt und die Option hinzugefügt, auch ls
versteckte Dateien, etwa so:
ls -aR | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\// /g'
Ausgabe (noch stärker gekürzt):
.
fd
net
dev_snmp6
nfsfs
rpc
auth.unix.ip
stat
vlan
ns
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.