[PERL] sup des fichiers dans sous dossiers
madmselle
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
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
- Fichiers bin - Guide
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