Script para mostrar en forma de árbol los directorios contenidos en un directorio dado utilizando una función recursiva, el directorio se puede pasar como parametro en la ejecución :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#!/bin/bash # Script para mostrar en forma de arbol los directorios contenidos en un directorio # dado utilizando una funcion recursiva # # Script realizado por Stephane Chazelas # http://www.pluto.it/files/ildp/guide/abs/contributed-scripts.html # # Puede recibir como parametro la ruta donde empezar. Si no se especifica, empieza # desde la carpeta actual # Ejemplo: $ bash tree.sh /home/user/ ricerca () { for dir in `echo *` # `echo *` enumera todos los archivos en el directorio de trabajo actual # sin saltos de linea, algo similar a la instruccion: for dir in * do if [ -d "$dir" ] ; then # Si se trata de un directorio (-d) zz=0 # Variable temporal para registrar el nivel # del directorio. while [ $zz != $1 ] # Bucle para mostrar las barras verticales interiores do echo -n "| " # Muestra el simbolo del enlace vertical zz=`expr $zz + 1` done if [ -L "$dir" ] ; then # Si el directorio es un link simbolico (-L) # Mostramos el simbolo del enlace seguido del nombre del directorio # eliminando la parte de la fecha y hora echo "+---$dir" `ls -l $dir | sed 's/^.*'$dir' //'` else echo "+---$dir" # Muestra el simbolo del enlace numdir=`expr $numdir + 1` # Incrementa el contador del directorio if cd "$dir" ; then # Si se ha podido acceder al directorio... ricerca `expr $1 + 1` # llamada recursiva cd .. # volvemos al directorio anterior fi fi fi done } # Si recibimos algun valor, nos movemos al directorio indicado if [ $# != 0 ] ; then cd $1 fi echo "Directorio inicial = `pwd`" numdir=0 ricerca 0 echo "Total directorios = $numdir" exit 0 |