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.