Své poznámky běžně píšu v markdown
ve složité adresářové struktuře, jako je tato.
~/doc/doc.md
~/doc/math/linearAlgebra/linearAlgebra.md
~/doc/math/linearAlgebra/numericalAnalysis.md
~/doc/linux/tmux/tmux.md
~/doc/linux/newsbeuter/newsbeuter.md
Tato adresářová struktura se neustále rozšiřuje a každý adresář má různé další soubory kromě *.md
soubory. Mám skript shellu, který rekurzivně hledá markdown files
v nadřazeném adresáři doc/
a vygeneruje html
a pdf
soubory pomocí pandoc
. Vytvořím také doc.md
soubor (prostřednictvím skriptu), který obsahuje seznam všech *.md
soubory. V současné době používám,
find ~/doc/**/*.md
k vygenerování tohoto seznamu. Chtěl bych je seřadit podle adresářové struktury pro snadné prohlížení takto:
math
linearAlgebra
linearAlgebra.md
numericalAnalysis.md
linux
tmux
tmux.md
newsbeuter
newsbeuter.md
Pokud fp=/home/user/doc/linux/tmux/tmux.md
je příklad úplné cesty k souboru, pak ${${fp%/*.md}#/home/user/doc/}
mi dává linux/tmux
. Mohu to dále zpracovat, abych izoloval linux
a tmux
atd. Ale neznám algoritmus pro vytvoření adresářové struktury. Myslím, že to bude vyžadovat použití polí pro uložení kompletní adresářové struktury pro každý soubor a jeho následné třídění.
Pokud již existuje shell skript k tomuto, dejte mi prosím vědět. Jinak jsou odkazy na možný algoritmus vítány.
Přijatá odpověď:
Pokud vše, co hledáte, je vytvořit pěkný formátovaný výstup všech .md
soubory, tree
by měl dělat přesně to, co chcete:
tree -P '*.md' /home/user/doc
Přidejte -A
pro hezké řádky také dělá zajímavé věci, jako je výstup do HTML/XML.