Perl - Obtener el tamaño ocupado por cada usuario

 
Vista:

Obtener el tamaño ocupado por cada usuario

Publicado por Andres (2 intervenciones) el 24/03/2015 05:12:29
Hola, alguien me puede ayudar con este scrip en perl?

(espacioHomeDe.pl) Que muestre el tamaño ocupado por el directorio de cada uno de los usuarios y el porcentaje correspondiente al total ocupado por todos los archivos en home. El listado debe estar ordenado, mostrando primero los usuarios cuyos directorio ocupa mas espacio.


Gracias por su atención.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Obtener el tamaño ocupado por cada usuario

Publicado por Andres (2 intervenciones) el 24/03/2015 20:53:17
Esto es lo que tengo por el momento, con la ayuda de un amigo (que no es su área el perl), pero no pude terminarlo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/perl
use File::Find;
use 5.010;
 
#Defino las variables que voy a usar
my $directorio;
my $nombre;
my $espacio;
# el % es un tipo de variable array multidimensional
my %resultados;
 
#Defino el directorio donde voy a buscar los home de los usuarios
$directorio="/home";
 
#Uso la funcion para abrir el directorio y ver el contenido
opendir DH,$directorio or die "no se puede abrir el directorio: $!";
 
#Recorro cada archivo del directorio
foreach $nombre (readdir DH){
	#Pregunto si es un directorio, si no lo es, lo ignoro. Ademas ignoro los directorios "." y ".." que son los que llevan al directorio anterior
	if (-d "$directorio/$nombre" && $nombre ne "." && $nombre ne "..") {
		#Busco los archivos que tiene y los sumo para saber cuanto ocupan de espacio
		find(sub{ -f and ( $espacio += -s ) }, "$directorio/$nombre" );
		#Los guardo en un array con los resultados
		$resultados{$nombre} = $espacio;
        }
}
#cierro el directorio que abri
closedir DH;
 
#OJO AQUI QUE NO ANDA: Intento ordenar el resultado antes de mostrarlo
@resultados = sort {$a <=> $b } %resultados;
 
use Data::Dumper;
#Muestro el resultado ordenado NO ANDA
print Dumper \%resultados;


¿Alguna sugerencia?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar