BASH – Script que muestra el arbol de directorios.-

Script para mostrar en forma de árbol los directorios contenidos en un directorio dado utilizando una función recursiva.-

#!/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
Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.