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.