Ich schreibe meine Notizen routinemäßig in markdown
in einer komplexen Verzeichnisstruktur wie dieser.
~/doc/doc.md
~/doc/math/linearAlgebra/linearAlgebra.md
~/doc/math/linearAlgebra/numericalAnalysis.md
~/doc/linux/tmux/tmux.md
~/doc/linux/newsbeuter/newsbeuter.md
Diese Verzeichnisstruktur wird ständig erweitert und jedes Verzeichnis hat neben *.md
verschiedene andere Dateien Dateien. Ich habe ein Shell-Skript, das rekursiv nach markdown files
sucht im übergeordneten Verzeichnis doc/
und generiert html
und pdf
Dateien mit pandoc
. Ich erstelle auch eine doc.md
Datei (über das Skript), die eine Liste aller *.md
enthält Dateien. Derzeit verwende ich,
find ~/doc/**/*.md
um diese Liste zu erstellen. Ich möchte sie nach der Verzeichnisstruktur für eine einfache Durchsicht wie folgt sortieren:
math
linearAlgebra
linearAlgebra.md
numericalAnalysis.md
linux
tmux
tmux.md
newsbeuter
newsbeuter.md
Wenn fp=/home/user/doc/linux/tmux/tmux.md
ist ein vollständiger Beispielpfad einer Datei, dann ${${fp%/*.md}#/home/user/doc/}
gibt mir linux/tmux
. Ich kann es weiterverarbeiten, um linux
zu isolieren und tmux
usw. Aber ich kenne den Algorithmus nicht, um die Verzeichnisstruktur zu erstellen. Ich denke, dass dies die Verwendung von Arrays erfordern wird, um die vollständige Verzeichnisstruktur für jede Datei zu speichern und sie dann zu sortieren.
Wenn dazu bereits ein Shell-Skript existiert, lassen Sie es mich bitte wissen. Ansonsten sind Hinweise auf mögliche Algorithmen willkommen.
Akzeptierte Antwort:
Wenn Sie nur eine schön formatierte Ausgabe aller .md
erstellen möchten Dateien, tree
sollte genau das tun, was Sie wollen:
tree -P '*.md' /home/user/doc
Fügen Sie -A
hinzu für hübsche Linien macht es auch interessante Dinge wie die Ausgabe in HTML/XML.