dor

Do in Repository - Fait dans le répertoire

Vraiment que si tu peut pas te retenir :)
alain Adelmar
aadelmar@numericable.fr beuuh c est quoi ca

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;

Ce script peut vous aider à effectuer des modifs sur quelques fichiers d'un répertoire ou de recenser tel ou tel fichier, a vous de modifier ou de travailler avec @files.
Moi je m'en sers tout les jours. Alain Adelmar