martes, 3 de enero de 2012

Shellscript Sumar tamaños archivo usuario

#!/bin/bash

#*Ejercicio 5.* Se desea sumar el espacio ocupado por un usuario en un
#directorio y todos sus subdirectorios. Para ello, deben sumarse los tamaños
#de todos los archivos de ese usuario en esa rama de directorios.
#El script recibirá como parámetros el nombre del usuario y el nombre del
#directorio.
#Validará que el usuario pertenezca al sistema, y que el nombre de
#directorio recibido sea efectivamente un directorio.
#Presentará el resultado total en bytes, Kbytes y Mbytes enteros.
# *Sugerencia:* usar el comando find con listado largo; el tamaño de archivo
#en el listado largo está entre las columnas 47 y 56. 



if [ $# -gt 2  ] #comprobar número de parámetros introducidos
then          #gracias a Alejandro por sus buenas formas
    echo "¡¡Horror!! Uso "$0" "
    exit
fi

usuario=$1
carpeta=$2
total=0

echo $usuario
echo $carpeta

existeusuario=`id $usuario 2>/dev/null`

if [ "$existeusuario" == "" ]
then
    echo "El usuario no existe"
else
    if [[ -d $carpeta ]]
    then
        #echo "La carpeta sí existe"
        find $carpeta -user $usuario -printf "%s\n" > tamano.txt
        while read linea
        do
            total=`expr $total + $linea`
        done < tamano.txt
        echo "Número de bytes: $total"           
        kbytes=`echo "scale=0;$total/1024" | bc`
        echo "Número de kilobytes: $kbytes"
        mbytes=`echo "scale=0;$kbytes/1024" | bc`
        echo "Número de megabytes: $mbytes"

    else
        echo "La carpeta no existe"
    fi
fi

No hay comentarios:

Publicar un comentario