Suppression de fichier

Suppression de fichier - Perl - Programmation

Marsh Posté le 28-01-2015 à 11:01:23    

Bonjour,
 
Je voudrais supprimer l'ensemble des fichiers d'un répertoire sauf certains type de fichier !
 
Exemple tous les fichiers de type "*.pl*" et certains fichiers passés en paramètre.
 
Le script ci-dessous fait presque le travail sauf qu'il supprime quand même les fichier ".pl".
Je suppose que cela se passe dans le if. Je ne sais pas comment exclure l'ensemble de mon tableau "@fic1".
 

Code :
  1. my $TMP_DIR = 'C:\Users\Downloads';
  2. File::Find::find(\&search, ($TMP_DIR));
  3. sub search {
  4. @fic1 = glob('*.pl');
  5. my $fic2 = 'fichier1.log';
  6. my $fic3 = 'fichier2.log';
  7.   if( $_ ne @fic1 && $_ ne $fic2 && $_ ne $fic3 ) {
  8.     unlink $_;
  9.   }
  10. }


 
Quelqu'un peut-il m'aider svp ?
Merci.

Reply

Marsh Posté le 28-01-2015 à 11:01:23   

Reply

Marsh Posté le 28-01-2015 à 11:30:55    

$_ ne @fic1 ça marche pas pour ce que tu veux faire.
 
En début de search, il suffit de faire
return if /\.pl\z/;
 
donc
sub search {
    # return if -d; si besoin est
    return if /\.pl$/o;
    return if /^fichier[12].log$/o;
    unlink;
}
devrait coller.
 
A+,


Message édité par gilou le 28-01-2015 à 11:48:59

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 28-01-2015 à 13:41:48    

Merci, ça fonctionne très bien.
 
Par contre est-il possible de mettre les variables à la place des noms des fichiers dans le "return if" ?

Reply

Marsh Posté le 28-01-2015 à 13:53:33    

Oui, une regexp peut contenir des variables, mais si leur valeur varie au cours du programme, il faut supprimer le o final de /.../o;  
 
A+,


Message édité par gilou le 28-01-2015 à 13:54:22

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 28-01-2015 à 15:57:16    

Merci beaucoup.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed