GNU/Linux >> Tutoriels Linux >  >> Linux

Script Shell :trier les fichiers dans des répertoires et des sous-répertoires ?

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.


Linux
  1. Comment identifier les répertoires de travail à l'aide de caractères et de variables Shell

  2. Comment compter le nombre de fichiers et de sous-répertoires dans un répertoire donné

  3. 9 répertoires Linux que vous devez sauvegarder et un que vous ne devriez pas

  4. Création et suppression de fichiers et de répertoires sous Linux

  5. Répertoire courant du script shell ?

Rechercher la commande sous Linux (Rechercher des fichiers et des répertoires)

Comment renommer des fichiers et des répertoires sous Linux

Comment copier des fichiers et des répertoires sous Linux

Comment supprimer des fichiers et des répertoires sur un terminal Linux

Linux :rechercher le nombre de fichiers dans un répertoire et des sous-répertoires

Principes de base de la ligne de commande Linux - Travailler avec des fichiers et des répertoires