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 :
#!/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