[PERL] sup des fichiers dans sous dossiers
madmselle
-
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
Bonjour,
Je suis débutante en Perl ! Après beaucoup de recherche sur internet, j arrive a quelque chose mais qui malheureusement ne marche pas.
J'aimerai supprimer des fichiers dans des sous dossiers avec pour critère une date (>5 mois), par exemple:
Dossier Test -> Dossier Test-bis -> fichier1 (cree le 02/06/2011) \\ ce fichier doit etre supprime
fichier2 (cree le 24/10/2011)
Voici mon code ... je ne sais pas s'il marche car après avoir rentrer le chemin du dossier, j'ai 2 erreurs
- Use of uninitialized value $files in -M at test.pl line 21, <STDIN> line 1.
- Use of uninitialized value in numeric gt (>) at test.pl line 21, <STDIN> line 1.
Quelqu'un peut il m'aider ?
Je suis débutante en Perl ! Après beaucoup de recherche sur internet, j arrive a quelque chose mais qui malheureusement ne marche pas.
J'aimerai supprimer des fichiers dans des sous dossiers avec pour critère une date (>5 mois), par exemple:
Dossier Test -> Dossier Test-bis -> fichier1 (cree le 02/06/2011) \\ ce fichier doit etre supprime
fichier2 (cree le 24/10/2011)
Voici mon code ... je ne sais pas s'il marche car après avoir rentrer le chemin du dossier, j'ai 2 erreurs
- Use of uninitialized value $files in -M at test.pl line 21, <STDIN> line 1.
- Use of uninitialized value in numeric gt (>) at test.pl line 21, <STDIN> line 1.
Quelqu'un peut il m'aider ?
use strict;
use warnings;
use File::Find;
my $files;
my @repertoires = lister_repertoires_recursif('chemin dossier');
sub lister_repertoires_recursif
{
print "Veuillez entrer le chemin du dossier : ";
my $repertoire = <STDIN>;
chomp($repertoire);
opendir (REP, $repertoire) or die $_;
if( -d "$repertoire" ) # le repertoire existe
{
opendir (DIR, "$repertoire") || die("Impossible d'ouvrir $repertoire...");
while ( -M $files > 5 ) #-M date de la derniere modification en jours
{
{
unlink $files;
print "$repertoire supprime\n";
}
}
closedir (DIR);
}
else
{
mkdir ($repertoire) || die ("Erreur creation repertoire\n");
}
return @repertoires;
}
A voir également:
- [PERL] sup des fichiers dans sous dossiers
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Gestion des fichiers - Télécharger - Gestion de fichiers
1 réponse
Salut,
Pas besoin de créer un sous-programme pour recherche récursive.
C'est pour ça qu'on utilise la fonction find du module File::Find
Un exemple qui trouve le fichier file2 qui est créer le mois du juin.
Pas besoin de créer un sous-programme pour recherche récursive.
C'est pour ça qu'on utilise la fonction find du module File::Find
Un exemple qui trouve le fichier file2 qui est créer le mois du juin.
lami20j@debian-acer:~/dossier_test$ pwd
/home/lami20j/dossier_test
lami20j@debian-acer:~/dossier_test$ ls -lR .
.:
total 8
drwxr-xr-x 2 lami20j lami20j 4096 oct. 28 22:07 dossier_test_bis
-rw-r--r-- 1 lami20j lami20j 165 oct. 28 22:15 fic_ancien_plus_du_5mois.pl
./dossier_test_bis:
total 0
-rw-r--r-- 1 lami20j lami20j 0 oct. 24 00:00 file
-rw-r--r-- 1 lami20j lami20j 0 juin 2 00:00 file2
lami20j@debian-acer:~/dossier_test$ cat fic_ancien_plus_du_5mois.pl
#!/usr/bin/perl
use strict;use warnings;
use File::Find;
my $rep = "/home/lami20j/dossier_test";
find sub{ print $File::Find::name,"\n" if -M > 5}, $rep;
__END__
lami20j@debian-acer:~/dossier_test$ perl fic_ancien_plus_du_5mois.pl
/home/lami20j/dossier_test/dossier_test_bis/file2