elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Necesito Ayuda POR FAVOR!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Necesito Ayuda POR FAVOR!!  (Leído 1,534 veces)
Pitagoras

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Necesito Ayuda POR FAVOR!!
« en: 2 Noviembre 2022, 23:59 pm »

Hola, buenas. He realizado el siguiente código en bash, pero no sé muy bien como puedo hacer lo siguiente:
- No sé hacer, que el tamaño devuelto en la ejecución se exprese en bloques de 1024bytes=1KB (Funcion computingSize())


Código:
#!/bin/bash
shopt -s dotglob #recuperar ocultos

##################################muestra error y fuerza salida#####################################
function mostrarError () {
    echo "ERROR. Modo de empleo: midu [opciones] [camino1 camino2 caminos3 ...]"
    exit 1
}

########################################Funcion recursiva###########################################
tam_parcial=0 #variable global

function computingSize(){
    #Guardamos las opciones en variables locales
    local opcion_d
    local opcion_s   
    local opcion_exlude
    local ruta=$4

    #si el camino es un archivo regular la unica opcion a tener en cuenta es --exclude
    if [ -f $ruta ]; then
        #se calcula el tamano (aux). Vale tambien con wc -c (tamano en bytes es valido)
        #stat con opciones adecuadas o en KB con ls -s
        tam_parcial=$aux
    fi

    #si el camino es un directorio
    if [ -d $ruta ]; then
        local nodo
        #lista todo lo que tiene la ruta archivos y directorios "ls" y los va ha recorrer uno a uno por nodo
        for nodo in $ruta/*; do
            #si es directorio
            if [[ -d $nodo ]] ; then

                #Guardar el valor de tam_parcial en variable local (e.j: temp)
                temp=$tam_parcial
                #resetear antes de la llamada a funcion recursiva
                tam_parcial=0

                computingSize $opcion_d $opcion_s $opcion_exlude $nodo
                #imprimir $tam_parcial
                #print(tam_parcial)

                #se recupera/restaura el valor anterior de tam_parcial y se acumula con lo obtenido
                #en la llamada recursiva
                tam_parcial <- $(expr $tam_parcial + $temp)

            #si es archivo regular
            elif [[ -f $nodo ]]; then
                #Calculando con wc -c
                tam_archivo=  wc -c "$nodo"

                #acumulamos
                tam_parcial=$(expr $tam_parcial + $tam_archivo)

           
            fi
        done
    fi
}

############################Comprobacion de errores#########################################
OPCION=""
CONTADOR=1 #Empezamos en el argumento 1
OPCION_D=99999;
OPCION_S=99999;
OPCION_EXCLU=99999;
for i in $@ ; do
    case $i in
         "-s" | "-d" | "--exclude")
                #Error si ya se ha recogido uno o mas caminos
                if [ $RUTAS ] ; then
                    mostrarError
                fi
                case $i in
                    "-d" | "--exclude")
                        #Error si -d o --exclude es el utimo param (y no tienen ningun valor detras)
                        if [ $CONTADOR -eq $# ]; then
                            mostrarError
                        fi
                        OPCION=$i
                        ;;
                    "-s")
                        #La opcion -s no tiene ningun param detras (Ruta)
                        OPCION_S=1
                        ;;
                    esac
                ;;
          *)
                ##Recuperamos los parametros para la opcion y/o la ruta##                       
                case $OPCION in
                    #Deberia recoger ahora el param de -d
                    "-d")
                        NIVELES=`expr $i / 1` #Paso a entero
                        #Si no hay niveles
                        if [ ! $NIVELES ] ; then
                            mostrarError
                        fi
                        #si los niveles son negativos
                        if [ $NIVELES -lt 0 ] ; then
                            mostrarError
                        fi
                        OPCION_D=$NIVELES                                                       
                        ;;                   

                    #Param de --exclude
                    "--exclude")
                        OPCION_EXCLU=$i                       
                        ;;

                    "") #Para recoger el camino. $i representa un camino dse anade al array vector                       
                        RUTAS+=("$i")
                        ;;
                esac
                #resetea al coger la opcion adecuada
                OPCION=""
                ;;           
    esac
    CONTADOR=$(expr $CONTADOR + 1)
done

#####################################################################
# Tratar cuando no se especifica camino
if [ ! $RUTAS ] ; then
     computingSize $OPCION_D $OPCION_S $OPCION_EXCLU "."
else
    for i in "${RUTAS[@]}"; do
        # Llamar a computingSize
        computingSize $OPCION_D $OPCION_S $OPCION_EXCLU $i
    done
fi



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
necesito ayuda, por favor con dvd's
Software
EDW 5 2,998 Último mensaje 22 Septiembre 2005, 10:02 am
por EDW
Necesito ayuda, por favor, necesito eliminar definitivamente un contacto del msn « 1 2 »
Mensajería
jordijor 10 14,382 Último mensaje 19 Diciembre 2011, 09:16 am
por A4TECH
Por favor, necesito ayuda!
Seguridad
ElyzabethP 3 2,033 Último mensaje 9 Diciembre 2011, 17:47 pm
por adastra
Necesito ayuda por favor. « 1 2 »
Criptografía
admtech 10 5,145 Último mensaje 18 Noviembre 2019, 21:50 pm
por admtech
Por favor necesito ayuda con esto, necesito que alguien lo vea y diga algo « 1 2 3 4 »
Foro Libre
Hason 39 12,096 Último mensaje 9 Diciembre 2019, 08:12 am
por Hason
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines