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.