GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo hago una lista recursiva de todos los directorios en una ubicación, primero en amplitud?

Si desea hacerlo utilizando herramientas estándar, la siguiente canalización debería funcionar:

find . -type d | perl -lne 'print tr:/::, " $_"' | sort -n | cut -d' ' -f2

Es decir,

  1. busque e imprima todos los directorios aquí en primer orden en profundidad
  2. Cuente el número de barras en cada directorio y anótelo a la ruta
  3. ordenar por profundidad (es decir, número de barras)
  4. extrae solo la ruta.

Para limitar la profundidad encontrada, agregue el argumento -max depth al comando de búsqueda.

Si desea que los directorios se enumeren en el mismo orden en que los encuentra, use "sort -n -s" en lugar de "sort -n"; el indicador "-s" estabiliza la clasificación (es decir, conserva el orden de entrada entre los elementos que se comparan por igual).


El find el comando admite -printf opción que reconoce muchos marcadores de posición.

Uno de esos marcadores de posición es %d que representa la profundidad de la ruta dada, relativa a donde find comenzó.

Por lo tanto, puede usar la siguiente frase simple:

find -type d -printf '%d\t%P\n' | sort -r -nk1 | cut -f2-

Es bastante sencillo y no depende de herramientas pesadas como perl .

Cómo funciona:

  • genera internamente una lista de archivos, cada uno representado como una línea de dos campos
  • el primer campo contiene la profundidad, que se utiliza para la clasificación numérica (inversa) y luego se corta
  • el resultado es una lista de archivos simple, un archivo por línea, en el orden más profundo primero

Linux
  1. Enumere recursivamente todos los archivos en un directorio, incluidos los archivos en los directorios de enlaces simbólicos

  2. Cómo eliminar todos los directorios .svn de los directorios de mi aplicación

  3. ¿Cómo enumerar recursivamente los directorios en C en Linux?

  4. ¿Cómo enumerar el tamaño del directorio de todos los directorios secundarios?

  5. ¿Cómo encontrar los directorios más grandes o los archivos más grandes?

Cómo enumerar todas las bases de datos en PostgreSQL

Cómo buscar y eliminar directorios recursivamente en Linux

Cómo encontrar recursivamente y enumerar los archivos por fecha en Linux

Cómo encontrar todas las fuentes instaladas en Linux

¿Cómo listar archivos recursivamente y ordenarlos por tiempo de modificación?

¿Cómo encontrar / enumerar todos los archivos únicos en dos directorios?