GNU/Linux >> Linux Esercitazione >  >> Linux

Script Shell:ordinare i file in directory e sottodirectory?

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.


Linux
  1. Come identificare le directory di lavoro usando i caratteri e le variabili della shell

  2. Come contare il numero di file e sottodirectory all'interno di una determinata directory

  3. Linux Elimina file e directory

  4. Trova tutti i file a zero byte nella directory e nelle sottodirectory

  5. Come posso copiare in modo ricorsivo tutti i file pdf in una directory (e le sue sottodirectory) in un'unica directory di output?

Trova comando in Linux (Trova file e directory)

Come rinominare file e directory in Linux

Come copiare file e directory in Linux

Come rimuovere file e directory su terminale Linux

Linux:trova il numero di file in una directory e sottodirectory

Nozioni di base sulla riga di comando di Linux:lavorare con file e directory