
Una de las cosas por las que se suele trabajar en un ambiente gráfico es por la utilidad de la interfaz para presentar la estructura de directorios de manera que pueda abarcarse fácilmente la mayor parte de ésta y su contenido. Esto es algo que se extraña cuando uno debe trabajar desde la línea de comandos, a través de un emulador de terminal.
Sin embargo, una presentación arbórea de la estructura de directorios puede ser lograda con el entubamiento de algunos comandos, por ejemplo:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
que permite obtener algo como:
/Applications> ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e ' |-Address Book.app |---Contents |-----MacOS |-----Resources |-------AddressBook.help |---------Contents |-----------Resources |-------------Dutch.lproj |---------------pgs |---------------sty |---------------xpgs |-------------English.lproj |---------------pgs |---------------sty |---------------xpgs |-------------French.lproj ...
Una presentación mucho más pulida puede ser obtenida con
find . -type d -print 2>/dev/null | awk '!/\.$/ {for( i=1;i<NF;i++ ){d=(d<3&&i!=1)?3:length($i); printf("%"d"s","|")} print "---"$NF}' FS='/'
y que permite obtener algo como:
/Applications> tf("%"d"s","|")}print "---"$NF}' FS='/' |---.install4j< |---Address Book.app | |---Contents | | |---_CodeSignature | | |---MacOS | | |---Resources | | | |---AddressBook.help | | | | |---Contents | | | | | |---Resources | | | | | | |---da.lproj | | | | | | | |---pgs | | | | | | | |---sty | | | | | | | |---xpgs | | | | | | |---Dutch.lproj | | | | | | | |---pgs | | | | | | | |---sty | | | | | | | |---xpgs | | | | | | |---English.lproj | | | | | | | |---pgs | | | | | | | |---sty | | | | | | | |---xpgs | | | | | | |---fi.lproj | | | | | | | |---pgs | | | | | | | |---sty | | | | | | | |---xpgs | | | | | | |---French.lproj | | | | | | | |---pgs | | | | | | | |---sty | | | | | | | |---xpgs | | | | | | |---German.lproj | | | | | | | |---pgs | | | | | | | |---sty | | | | | | | |---xpgs ...

Si la indentación (el valor de d
en el script AWK
) resulta demasiado excesiva, puede usarse la siguiente versión del comando:
find . -type d -print 2>/dev/null | awk '!/\.$/ {for( i=1;i<NF;i++ ){d=3; printf("%"d"s","|")} print "--"$NF}' FS='/'
El funcionamiento de estos comando puede variar de versión a versión de unix. Yo lo he podido probar usando el shell Korn y Bourne en HP-UX, así como su versión para Mac OS X 10.5 y 10.6, donde también se ha podido validar con los shells Z y BASH.