Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
632 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Vérifier la présence d'un fichier à partir d'un masque

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Vérifier la présence d'un fichier à partir d'un masque

n°1630757
cybervince
It's all good man
Posté le 25-10-2007 à 11:01:39  profilanswer
 

Bonjour,
 
J'ai fait un script dont le but est de vérifier la présence d'un certain nombre de fichiers à partir de masques.
Par exemple je veux savoir si il existe dans un répertoire donné un fichier qui commence par ABC.
 
Hélas, en faisant un if -f ABC*, ca ne fonctionne pas et il m'indique que le fichier n'est pas présent, malgré qu'il existe bien un fichier ABC123 par exemple.
 
J'en conclue que le if -f nécessite de connaître le nom précis du fichier.
Savez vous s'il existe une solution de contournement pour vérifier à partir d'un masque contenant un * ?
 
Merci par avance.


---------------
SaulGoodman.fr: Actus sur la série Better Call Saul
mood
Publicité
Posté le 25-10-2007 à 11:01:39  profilanswer
 

n°1630777
anapajari
s/travail/glanding on hfr/gs;
Posté le 25-10-2007 à 11:22:48  profilanswer
 

Code :
  1. foreach (sort readdir(DIRHANDLE)) {
  2.     print "found file: $_\n" if /^ABC/;
  3.   }

n°1630786
cybervince
It's all good man
Posté le 25-10-2007 à 11:36:29  profilanswer
 

Si je comprend bien, ca va me lister les fichiers contenus dans le répertoire et qui répondent au masque.
 
Le soucis, c'est que je veux uniquement contrôler la présence (savoir s'il y en a au moins un) et ce sans avoir à l'ouvrir.
Le but étant de vérifier l'arrivée d'un certain nombre de fichiers répondant chacun à un masque (les masques sont dans un fichier pamamètre et ca ca fonctionne déjà bien) et de remonter une alerte en cas d'absence d'un ou plusieurs fichiers.


---------------
SaulGoodman.fr: Actus sur la série Better Call Saul
n°1630794
anapajari
s/travail/glanding on hfr/gs;
Posté le 25-10-2007 à 11:44:57  profilanswer
 

cybervince a écrit :

Le soucis, c'est que je veux uniquement contrôler la présence (savoir s'il y en a au moins un) et ce sans avoir à l'ouvrir.


RTFM :o
la tu parcours le repertoire mais en aucun cas tu ouvres/lis le fichier ...

n°1630887
cybervince
It's all good man
Posté le 25-10-2007 à 14:03:36  profilanswer
 

anapajari a écrit :


RTFM :o
la tu parcours le repertoire mais en aucun cas tu ouvres/lis le fichier ...


Oui je suis d'accord avec toi.
Ce que je voulais en fait, c'est éviter d'avoir à faire un parcours de tout le répertoire alors qu'il existe peut-être une fonction "native" qui permet de tester l'existance du fichier.
 
Je vais déjà essayer de cette façon pour voir si ca fonctionne.
Merci de ton aide ;)


---------------
SaulGoodman.fr: Actus sur la série Better Call Saul
n°1630897
anapajari
s/travail/glanding on hfr/gs;
Posté le 25-10-2007 à 14:10:29  profilanswer
 

tu peux également faire un grep sur ta list, si la boucle te gène... ça dépend vraiment de ce que tu as besoin de faire [:spamafote]
 
Et puis  si tu veux pas le faire "à la main" t'as plein de modules qui te permettent de faire ça dont File::Find par exemple ( mais grosso modo ça revient au même).

n°1633387
dreameddea​th
Posté le 30-10-2007 à 02:20:36  profilanswer
 

Il faut utiliser la fonction glob, qui rend tous les fichiers matchant le pattern (à la sauce unix).
 
Cordialement,

n°1633425
Taz
bisounours-codeur
Posté le 30-10-2007 à 09:03:51  profilanswer
 

<*.foo>

n°1633661
cybervince
It's all good man
Posté le 30-10-2007 à 11:46:38  profilanswer
 

Bon finalement j'avais adopté la méthode de balayer le répertoire :
Pas forcément ce qu'il y a de plus rapide niveau système, mais ca fonctionne bien.
 

Code :
  1. # On compte le nombre de fichiers dans le répertoire qui corrspondent au masque
  2.                 my $nbfic = 0;
  3.                 opendir (my $dir, $REP_CFT_IN) or die "$REP_CFT_IN n'existe pas !";
  4.                 my @files = readdir $dir;
  5.                 foreach $fichier (@files)
  6.                 {
  7.                         $nbfic++ if ($fichier =~ /^$idf/);
  8.                 }
  9.                 # S'il y a au moins un fichier, c'est OK
  10.                 if ($nbfic > 0)
  11.                 {
  12.                         print " => OK\n";
  13.                         print LOG " => OK\n";
  14.                 } else
  15.                 {
  16.                         print " => KO\n";
  17.                         print LOG " => KO\n";
  18.                         $STATUT_GLOBAL = 1;
  19.                         push(@erreurs, $idf);
  20.                 }


---------------
SaulGoodman.fr: Actus sur la série Better Call Saul
n°1633677
anapajari
s/travail/glanding on hfr/gs;
Posté le 30-10-2007 à 11:53:33  profilanswer
 

un petit truc pour que ça aille plus vite, au lieu de:

Code :
  1. foreach $fichier (@files)
  2.                {
  3.                        $nbfic++ if ($fichier =~ /^$idf/);
  4.                }


je ferais plutot:

Code :
  1. foreach $fichier (@files)
  2.                {
  3.                        $nbfic++ && last if ($fichier =~ /^$idf/);
  4.                }


Il manque par ailleurs un closedir dans ton bordel.

cybervince a écrit :

Pas forcément ce qu'il y a de plus rapide niveau système, mais ca fonctionne bien.


[:prozac] plz explain ...

mood
Publicité
Posté le 30-10-2007 à 11:53:33  profilanswer
 

n°1633686
Taz
bisounours-codeur
Posté le 30-10-2007 à 11:56:15  profilanswer
 

pourquoi vous voulez pas glober ? Y a bien MTOWTDI mais quand même

n°1633703
anapajari
s/travail/glanding on hfr/gs;
Posté le 30-10-2007 à 12:06:53  profilanswer
 

Moi j'ai rien contre mais comme je le disais plus haut ça dépend vraiment de ce qu'il veut faire.
Et de ce que je comprends de son truc, File::Find me parait quand même plus adapté que File::Glob [:dawa]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Vérifier la présence d'un fichier à partir d'un masque

 

Sujets relatifs
[ACCESS] Développer à plusieurs sur le même fichiercomment lire un fichier audio mp3 ou wav avec c++ ?
Uploader un fichier sans passer par ParcourirCreation d'un à partir d'un autre site
Stdou redirigé vers un fichier mais quand meme affiché sur la console?Erreur: undefined reference to `seek' (Modification fichier bmp)
Générer du xml à partir de php avec paramètres (pour rss)[Batch-XP] "Unseter" une variable ?
[PHP] Importer un fichier XML dans base MYSQLInclude un fichier php dans un different site sur le meme serveur
Plus de sujets relatifs à : Vérifier la présence d'un fichier à partir d'un masque


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR