J'écris régulièrement mes notes en markdown
dans une structure de répertoire complexe comme celle-ci.
~/doc/doc.md
~/doc/math/linearAlgebra/linearAlgebra.md
~/doc/math/linearAlgebra/numericalAnalysis.md
~/doc/linux/tmux/tmux.md
~/doc/linux/newsbeuter/newsbeuter.md
Cette structure de répertoires est en constante expansion et chaque répertoire contient divers autres fichiers en dehors du *.md
des dossiers. J'ai un script shell qui recherche de manière récursive les markdown files
dans le répertoire parent doc/
et génère html
et pdf
fichiers utilisant pandoc
. Je crée aussi un doc.md
fichier (via le script) qui contient une liste de tous les *.md
des dossiers. Actuellement j'utilise,
find ~/doc/**/*.md
pour générer cette liste. Je voudrais les trier en fonction de la structure des répertoires pour une lecture facile comme ceci :
math
linearAlgebra
linearAlgebra.md
numericalAnalysis.md
linux
tmux
tmux.md
newsbeuter
newsbeuter.md
Si fp=/home/user/doc/linux/tmux/tmux.md
est un exemple de chemin complet d'un fichier, puis ${${fp%/*.md}#/home/user/doc/}
me donne linux/tmux
. Je peux le traiter davantage pour isoler linux
et tmux
etc. Mais je ne connais pas l'algorithme pour créer la structure de répertoires. Je pense que cela nécessitera l'utilisation de tableaux pour stocker la structure complète du répertoire pour chaque fichier, puis le trier.
Si un script shell existe déjà pour cela, veuillez me le faire savoir. Sinon, les pointeurs sur un algorithme possible sont les bienvenus.
Réponse acceptée :
Si tout ce que vous cherchez à faire est de produire une belle sortie formatée de tous les .md
fichiers, tree
devrait faire exactement ce que vous voulez :
tree -P '*.md' /home/user/doc
Ajouter -A
pour les jolies lignes, il fait aussi des choses intéressantes comme la sortie en HTML/XML.