#!/bin/sh # ls2html (0.05) Script para generar este índice desde un "ls -l" # # USO: ls2html [preposicion-para-ls] "cli" significa "ls -l cli*" # # # Copyright Manel Marin @ 2000 Cubierto por la licencia GNU GPL disponible en # http://www.gnu.org/copyleft/gpl.html Se puede copiar, distribuir y modificar # libremente bajo los términos de la GPL e incluyendo siempre este párrafo # #21.1.00 (0.01) # Genera una pagina ls.html con una tabla con: # - hiperenlaces a los archivos del directorio activo # - tamaño en bytes del archivo # - las tres primeras lineas de cada archivo como descripción #2.9.00 (0.02) # - Trato los symlinks poniendo enlace al archivo apuntado #4.9.00 (0.03) # - Añadir title y cabecera con contenido de archivo .title de dir local #19.9.00 (0.04) # - Permitir ls parciales (empezando con el valor de $1 ) #16.5.01 (0.05) # - Permitir symlinks y archivos html TODO: extraer TITLE como descrip FICHERO="$1" #Primer parámetro de ls2html INDICE="ls.html" #Nombre por defecto de indice generado if [ "$FICHERO" ] then INDICE="ls-$FICHERO.html" #A menos que se especifique otro fi ls -l $FICHERO* | awk ' BEGIN{ print ""; print ""; print ""; system( "cat .title'$FICHERO'" ); print ""; print ""; print "

"; system( "cat .title'$FICHERO'" ); print "

"; print ""; print ""; print ""; print ""; } # Me salto la 1ª linea del ls -l (total 12345) # y el archivo de salida "ls.html" $1 == "total" || $9 == "ls.html" { next } # ATENCION: En "ls -l": # $1 son los permisos del archivo # $5 es tamaño # $9 es el nombre del archivo # $11 es el archivo apuntado por un symlink # En symlink usar el nombre apuntado como enlace y "->" en lugar de tamaño $1 ~ "^l" { print ""; print ""; next } # Por defecto procesar como archivo normal { print ""; print ""; } END{ print "
ArchivoBytesDescripción
"$9" -> "; # Poner descripción if ( $11 ~ "\.htm" ) print "HTML"; else if ( $11 ~ "\.gz" ) print "GZIPED"; # Si ASCII poner como descripción las tres primeras linea else system( "sed 3q "$9 ); print "
"$9" "$5" "; # Poner descripción if ( $9 ~ "\.htm" ) print "HTML"; else if ( $9 ~ "\.gz" ) print "GZIPED"; # Si ASCII poner como descripción las tres primeras linea else system( "sed 3q "$9 ); print "
"; print ""; print ""; } ' > $INDICE