cours0708/P5B/ruby/161007/histo.rb

52 lines
1.3 KiB
Ruby
Raw Permalink Normal View History

2008-11-25 21:11:16 +00:00
#!/usr/bin/ruby -w
# Affiche un histogramme du nombre de fichiers tri<72>s par classe de grandeur "tailleClasse" sur un nombre "nombreDeClasse".
# R<>cup<75>ration des argument
if ARGV.length < 3
puts "Utilisation : ./histo.rb < nomRep > < nbreDeClasse > < tailleClasse (en octet) >"
exit
end
# attribution d'<27>l<EFBFBD>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<69>s : #{nbrFichiers}"
puts "Taille totale : #{tailleTotale}"
puts "Nombre total de blocs lus : #{tailleTotaleBlocs}"
tailleMoyenneFichier = tailleTotale / nbrFichiers
puts "Taille moyenne d'un fichier : #{tailleMoyenneFichier}"