52 lines
1.3 KiB
Ruby
52 lines
1.3 KiB
Ruby
#!/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}" |