Script de scrutation de dossier et de sous dossier
Bonjour je viens vous voir car je suis actuellement entrain de faire un script permettant de lire dans le fichier d'un dossier et récupérer les phrase commençant par un motif(une lettre ou un mot).
Pour ceci pas de problème m'ont problème vient du faite que j'aimerai scruter les sous dossier du dossier choisit et quand je lance mon code ce n'es pas le sous dossier qui est lut mais le dossier ou se trouve m'ont script.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| #!/usr/bin/perl
# Saisie du dossier
print "\n Quel dossier ? ";
$Dossier=<STDIN>;
chomp($Dossier);
# Saisie du motif
print "\n Quel motif ? ";
$Motif=<STDIN>;
chomp($Motif);
# Saisie du nom du rapport
print "\n Quel nom pour le rapport ? ";
$Rapport=<STDIN>;
chomp($Rapport);
# Créer le fichier rapport
open (fichierRapport, "> $Rapport"); # Ouverture du fichier rapport en écriture
$DateDuJour=`date`; # récupération de la date du systeme avec les quotes inversées dans la variable date du jour
print fichierRapport "Date : $DateDuJour";
print fichierRapport "Dossier : $Dossier\n\n";
#Listing des fichiers du répertoire
opendir REP,$Dossier; #descripteur de répertoire.
@listFile = readdir REP; # la liste des fichiers (et répertoires) de D
close REP;
#Affichage temporaire de la liste des fichiers
#foreach (@listFile)
#{
# print "$_ ";
#}
$i=0;
foreach (@listFile)
{
$i++;
if (-f "$Dossier/$_") # si $_ est un fichier et non un dossier ou un repertoire
{
#print "\nFichier : $_\n\n";
print fichierRapport "\n\nFichier : $_\n\n";
open (fichierLu, "< $Dossier/$_");
$compteur = 0;
while ($l = <fichierLu>)
{
$compteur++;
if ($l =~ /^$Motif/)
{
print fichierRapport "ligne $compteur : $l";
}
}
close fichierLu;
}
else
{
if (-d "$Dossier/$_")
{
$SousDossier="$Dossier/$_";
}
print $SousDossier;
print "\n";
#Listing des fichiers du répertoire
opendir REP,$SousDossier; #descripteur de répertoire.
@listFile2 = readdir REP; # la liste des fichiers (et répertoires) de D
close REP;
foreach (@listFile2)
{
if (-f "$SousDossier/$_") # si $_ est un fichier et non un dossier ou un repertoire
{
#print $SousDossier
#print "\nFichier du sous dossier : $_\n\n";
print fichierRapport "\n\nFichier : $_\n\n";
open (fichierLu2, "< $SousDossier/$_");
$compteur = 0;
while ($l = <fichierLu>)
{
$compteur2++;
if ($l =~ /^$Motif/)
{
print fichierRapport "ligne $compteur : $l";
}
}
close fichierLu2;
}
}
}
}
close fichierRapport;
print "\nTraitement termine";
print "\nRapport genere : $Rapport";
print "\n\nAurevoir\n\n"; |