Bonjour,
J'ai fait un script en perl qui compte le nombre de fichiers dans le sous-repertoire courant. Je cherche à savoir, il ya un moyen de faire un comptage par type de fichiers (*.jpg, par exemple) de façon récursive par sous répertoire depuis le répertoire racine ( ici le réperoire racine est "/datas/docs").
Exemple d'affichage pour les jpg :
/datas/docs
Archives 1000
photos 100
divers 500
Mon script ne permet pas de résoudre le problème concernant les répertoires qui contiennent l'expression jpg ou pdf dans leurs noms.
Merci d'avance
---------------------------------------------------------------------------------------------
Mon script
#!/usr/bin/perl
use CGI qw(:standard :html3);
$cgi = new CGI;
($sec, $min, $heure, $jour, $mois,$annee, undef, undef, undef) = localtime();
$mois += 1 and $annee += 1900;
$date=$jour.'-'.$mois.'-'.$annee;
my (@tab,%hash);
# Repertoire Archives
$arch_jpg=(`ls -R /datas/docs/archives|grep jpg|wc -l`+`ls -R /datas/docs/archives|grep JPG|wc -l`);
$arch_pdf=(`ls -R /datas/docs/archives|grep PDF| wc -l`+`ls -R /datas/docs/archives|grep pdf| wc -l`);
#Repertoire photos
$photos=(`ls -R /datas/docs/photos|grep jpg|wc -l`+`ls -R /datas/docs/photos|grep JPG|wc -l`);
#Divers
$divers_jpg=(`ls -R /data/documents/divers|grep jpg|wc -l`+`ls -R /data/documents/divers|grep JPG|wc -l`);
$divers_pdf=(`ls -R /data/documents/divers|grep PDF|wc -l`+ `ls -R /data/documents/divers|grep pdf|wc -l`);
#Totaux
$jpg = ($arch_jpg+$photos+$divers_jpg);
$pdf=($arch_pdf+$divers_pdf);
%hash=("Archives (pdf)"=>$arch_pdf, "Archives (jpg)"=>$arch_jpg,"Photos"=>$photos "Divers(jpg)"=>$divers_jpg, "Divers (pdf)"=>$divers_pdf,
"Total (jpg)"=>$jpg,"Total (pdf)" =>$pdf);
#%table=%h;
push @tab,\%hash;
print
$cgi->header() .
$cgi->start_html (
-title=>'Nombre de docs',
-author=>'xxxxx',
-meta=>{'keywords'=>'CGI Perl'},
-BGCOLOR=>'white',
-LINK=>'red',
-charset=>'UTF-8',
).
$cgi->h3('Nombre de docs - '.$date) . "\n";
#print '<TABLE border="1" cellspacing="2" cellpadding="2">' . "\n";
print $cgi->table({border=>1,width=>'20%'}) . "\n";
print $cgi->Tr(th[qw(docs Nombres)]);
foreach (@tab){
foreach my $k(sort keys %{$_}){
print $cgi-> Tr(td($k),td({align=>"right"},$_->{$k})),"\n";
}
}
print "</TABLE>";
$cgi->end_html ;
exit (0);
