Ce script Perl vous servira pour effectuer tout un
tas de trucs sur un répertoire.
Il accepte le nom du rep en argument. Il travail directement sur le
répertoire.
Il crée en sortie un fichier sorti_dor.log dans votre rep
courant. Alain
#!/usr/bin/perl -w
# remd: dor.pl est un script qui fait des actions dans un répertoire
# il lit le nom du rep en argument.
# usage: dor.pl /nom/du/rep
# V:1.0 vendredi 18 Mai 2009 Pessac
# - Alain Adelmar alias asynchrone - Ça marche grave
# $ID:
# use strict;
# use File::Copy;
# use warnings;
# utilisation de la date/heure pour maintenant et pour file X
use DateFrench;
our $format_affichage = 2;
our $opt_date_file = 2;
our $fr_date_now = maintenant("$format_affichage");
print "$fr_date_now\n";
use Cwd;
my $dir= cwd;
my $lx = "x" x 20;
my $argv = my $o = my $fout = my $resp = my $reg = "";
my $moi = "alain Adelmar";
my $recap_lbl= "$0 écris par $moi \nle 21 Avril 2008\nexecuter $fr_date_now\n";
my $rootfile ="dor.log";
#----------------- sortie formatée pour l'affichage fichiers/sorti ---------
format STDOUT_TOP =
Page @<<
$%
n taille fichier
=== ======= ======================================================================
.
# traitement argument - fichier a traiter et verif validité
if (@ARGV) {
if ($ARGV[1] ne "") {
$fout = $ARGV[1];
$argv = "o";
$rep = $ARGV[0];
}
else {
$rep = $ARGV[0];
}
}
else {
print "$lx\nusage: dor.pl [rep_a_traiter] [fichier_de_sortie] \n( $0 made by $moi)\n";
#---------demander quel fichier traiter et verifier si il existe
print "$lx\n";
print "Indiquez le repertoire a traiter:\n";
chomp($rep =);
}
# création d'un fichier de sortie--------------
if ($argv =~ /o/) {
unless ($fout =~ /\/|\\/) {
($fout= "$dir/$fout");
(&logout) if (-f $fout);
}
print "désirez vous avoir $fout comme fichier cible?";
my $resp =;
if($resp=~ /^n/i) {
print "veuillez recommencer tout en indiquant le nom_du_fichier_cible ou path_et_le_nom_du_fichier_cible\n";
}
}
else {
$fout = "sortie_" . "$rootfile";
&logout;
}
open FOUT, ">$fout" or die "Ouverture de $fout impossible $!";
#-------------------------ici on traite le rep ---
if (-d $rep) {
opendir REP, "$rep" or die "Ouverture de $rep impossible $!";
@files = (sort readdir REP);
closedir REP || die "Fermeture de $rep impossible $!";
foreach $file(@files) {
next unless ($file =~ /\.{1}s?h?x?t?m{1}l?$/i);
# $fs = "$spath\/$file";
$fs = "$rep\/$file";
@tmpstat = stat($fs);
$taillef= $tmpstat[7];
# print "$taillef\n";
printf FOUT "%7d %-40s\n", $taillef, $fs;
write;
$i++;
# push @nwcontenu, $reg;
}
}
#--------------------------------------------------------------
# print FOUT @nwcontenu;
close FOUT || die "Fermeture de $fout impossible $!";
sub logout {
my $fout= @_;
$u= 0;
while (-f $fout) {
$u++;
$fout = "$dir\/sorti_" . $u . "_$rootfile";
}
}
format STDOUT =
@<<< @<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$i, $taillef, $fs
.
END;