#!/usr/bin/ruby -w # Affiche un histogramme du nombre de fichiers triés par classe de grandeur "tailleClasse" sur un nombre "nombreDeClasse". # Récupération des argument if ARGV.length < 3 puts "Utilisation : ./histo.rb < nomRep > < nbreDeClasse > < tailleClasse (en octet) >" exit end # attribution d'éléments rep=ARGV[0] nbr=ARGV[1].to_i taille=ARGV[2].to_i # initialisation de certaines variables nbrFichiers = 0 tailleTotale = 0 tailleTotaleBlocs = 0 histogramme = [] for i in 0 ... nbr do histogramme[i] = 0 end # Nous allons dans le répertoire courant Dir.chdir(rep) repertoireOuvert=Dir.open(rep) repertoireOuvert.each do |entree| if File.file?(entree) fichier = File.open(entree,"r") stats = fichier.stat colonne = stats.size / taille histogramme[colonne] = histogramme[colonne].to_i + 1 nbrFichiers = nbrFichiers + 1 tailleTotale = tailleTotale + stats.size tailleTotaleBlocs = tailleTotaleBlocs + stats.blocks.to_i end end histogramme.each do |element| print(element.to_s, " | ") end puts "\nNombre total de fichiers examinés : #{nbrFichiers}" puts "Taille totale : #{tailleTotale}" puts "Nombre total de blocs lus : #{tailleTotaleBlocs}" tailleMoyenneFichier = tailleTotale / nbrFichiers puts "Taille moyenne d'un fichier : #{tailleMoyenneFichier}"