Rutinariamente escribo mis notas en markdown
en una estructura de directorio compleja como esta.
~/doc/doc.md
~/doc/math/linearAlgebra/linearAlgebra.md
~/doc/math/linearAlgebra/numericalAnalysis.md
~/doc/linux/tmux/tmux.md
~/doc/linux/newsbeuter/newsbeuter.md
Esta estructura de directorios está en constante expansión y cada directorio tiene varios otros archivos además del *.md
archivos Tengo un script de shell que busca recursivamente markdown files
en el directorio padre doc/
y genera html
y pdf
archivos usando pandoc
. También creo un doc.md
(a través del script) que contiene una lista de todos los *.md
archivos Actualmente uso,
find ~/doc/**/*.md
para generar esta lista. Me gustaría ordenarlos de acuerdo con la estructura del directorio para facilitar su lectura de esta manera:
math
linearAlgebra
linearAlgebra.md
numericalAnalysis.md
linux
tmux
tmux.md
newsbeuter
newsbeuter.md
Si fp=/home/user/doc/linux/tmux/tmux.md
es un ejemplo de la ruta completa de un archivo, luego ${${fp%/*.md}#/home/user/doc/}
me da linux/tmux
. Puedo procesarlo aún más para aislar linux
y tmux
etc. Pero no conozco el algoritmo para crear la estructura del directorio. Creo que esto requerirá el uso de matrices para almacenar la estructura de directorios completa para cada archivo y luego clasificarlo.
Si ya existe un script de shell para esto, hágamelo saber. De lo contrario, se agradecen sugerencias sobre posibles algoritmos.
Respuesta aceptada:
Si todo lo que busca hacer es producir una salida con buen formato de todos los .md
archivos, tree
debería hacer exactamente lo que quieres:
tree -P '*.md' /home/user/doc
Añadir -A
para líneas bonitas, también hace cosas interesantes como salida a HTML/XML.