Scrivo regolarmente i miei appunti in markdown
in una struttura di directory complessa come questa.
~/doc/doc.md
~/doc/math/linearAlgebra/linearAlgebra.md
~/doc/math/linearAlgebra/numericalAnalysis.md
~/doc/linux/tmux/tmux.md
~/doc/linux/newsbeuter/newsbeuter.md
Questa struttura di directory è in continua espansione e ogni directory ha vari altri file oltre a *.md
File. Ho uno script di shell che cerca ricorsivamente markdown files
nella directory principale doc/
e genera html
e pdf
file utilizzando pandoc
. Creo anche un doc.md
file (tramite lo script) che contiene un elenco di tutti i *.md
File. Attualmente uso,
find ~/doc/**/*.md
per generare questo elenco. Vorrei ordinarli in base alla struttura della directory per una facile lettura in questo modo:
math
linearAlgebra
linearAlgebra.md
numericalAnalysis.md
linux
tmux
tmux.md
newsbeuter
newsbeuter.md
Se fp=/home/user/doc/linux/tmux/tmux.md
è un esempio di percorso completo di un file, quindi ${${fp%/*.md}#/home/user/doc/}
mi dà linux/tmux
. Posso elaborarlo ulteriormente per isolare linux
e tmux
ecc. Ma non conosco l'algoritmo per creare la struttura della directory. Penso che ciò richiederà l'uso di array per memorizzare la struttura di directory completa per ciascun file e quindi ordinarlo.
Se esiste già uno script di shell per questo, per favore fatemelo sapere. In caso contrario, sono graditi suggerimenti su possibili algoritmi.
Risposta accettata:
Se tutto ciò che stai cercando di fare è produrre un bel output formattato di tutti i .md
file, tree
dovrebbe fare esattamente quello che vuoi:
tree -P '*.md' /home/user/doc
Aggiungi -A
per linee graziose, fa anche cose interessanti come l'output in HTML/XML.