Comando tree en Linux

Este es un comando sencillo en Linux que permite mostrar, de una forma organizada, los archivos/carpetas y subarchivos/subcarpetas de un directorio dado.



#!/bin/bash


#funciones
function comprobarDirectorio 
{
ELEMENTOS_RUTA=$( ls -C1 $1 )
for i in $ELEMENTOS_RUTA
do
NUMERO_TABULACIONES=$(echo $1/$i | tr -cd / | wc -c)
ECHO_TABS=""
while [  $NUMERO_TABULACIONES -gt 1 ]; do
             ECHO_TABS="${ECHO_TABS}"$'\t'""
             let NUMERO_TABULACIONES=NUMERO_TABULACIONES-1 
         done
if [ -d $1/$i ];
then
echo -e "${ECHO_TABS} \e[0;31m$i (Directorio)\e[0m "
comprobarDirectorio $1/$i 
else
if [ -f $1/$i ];
then
if [ -x $1/$i ];
then
echo -e "${ECHO_TABS} \e[1;32m$i\e[0m"
else
echo "${ECHO_TABS} $i"
fi
fi
fi
done
}

function ayuda {
echo ""
echo "Programa que permite ver un arbol del directorio."
echo ""
echo "Usage:"
echo $'\t'"./tree.sh [PARAMS]"
echo ""
echo "Options:"
echo $'\t'"[-h|--help] "$'\t'""$'\t'" Muestra el siguiente mensaje de ayuda."
echo $'\t'"[-d|--dir directorio] "$'\t'" Directorio del cual queremos generar el arbol."
echo ""
}


# Mientras el número de argumentos NO SEA 0
while [ $# -ne 0 ]
do
    case "$1" in
    -h|--help)
        ayuda
exit 2
        ;;
-d|--dir)
        DIRECTORIO=$2
shift
        ;;
    *)
        echo "tree: illegal option -- $1."
ayuda
        exit 2
        ;;
    esac
    shift
done

#condiciones
if [ -z "$DIRECTORIO" ]
then
    RUTA_ACTUAL=.
else
RUTA_ACTUAL=$DIRECTORIO
fi

#ejecucion del programa
comprobarDirectorio $RUTA_ACTUAL