GNU/Linux >> Tutoriales Linux >  >> Linux

Shell Script:¿Ordenar archivos en directorios y subdirectorios?

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.


Linux
  1. Cómo identificar directorios de trabajo usando variables y caracteres de shell

  2. Cómo contar la cantidad de archivos y subdirectorios dentro de un directorio dado

  3. Cómo encontrar el número de archivos en un directorio y subdirectorios

  4. Shell script directorio actual?

  5. ¿Cómo puedo copiar recursivamente todos los archivos pdf en un directorio (y sus subdirectorios) en un solo directorio de salida?

Buscar comando en Linux (Buscar archivos y directorios)

Cómo cambiar el nombre de archivos y directorios en Linux

Cómo copiar archivos y directorios en Linux

Cómo eliminar archivos y directorios en la terminal de Linux

Linux:busque el número de archivos en un directorio y subdirectorios

Conceptos básicos de la línea de comandos de Linux:trabajar con archivos y directorios