[PERL] Accès aux fichiers dans sous dossiers
Résolu/Fermé
Utilisateur anonyme
-
3 juil. 2007 à 17:01
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 4 juil. 2007 à 21:57
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 4 juil. 2007 à 21:57
A voir également:
- [PERL] Accès aux fichiers dans sous dossiers
- Téléchargez cette archive (dossier compressé). en extraire tous les fichiers dans un dossier local. quel fichier contient l’expression trouverpix ? ✓ - Forum Windows
- Wetransfer gratuit fichiers lourd - Guide
- WeTransfer - Télécharger - Téléchargement & Transfert
- Le fichier à télécharger est la nouvelle note de service de votre entreprise. importez ce fichier dans le bon dossier sur l'espace pix cloud. donnez à ce fichier les mêmes droits d'accès que les autres notes de service. - Forum Windows
- Le chemin d'accès spécifié est introuvable ✓ - Forum Téléchargement
4 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
3 juil. 2007 à 20:42
3 juil. 2007 à 20:42
Salut,
Le script
Le script
#!/usr/bin/perl
use strict;use warnings;
use File::Find;
print "Veuillez entrer le chemin du dossier : ";
chomp(my $path = <STDIN>);
#Le chemin du fichier config.cfg est passé en paramètre par l'utilisateur
print "Veuillez entrer le message d'erreur que vous voulez rechercher : ";
chomp(my $exp = <STDIN>);
sub recherche {
if (-f){
print "**** FICHIER CONTENANT UNE ERREUR ****\n$File::Find::dir/$_\n"
if grep { /$exp/ } `cat $_`;
}
}
find(\&recherche,"$path");
__END__l'arborescence
lami20j@debian:~$ ls -lR /home/lami20j/bonjovi/ /home/lami20j/bonjovi/: total 12 drwxr-xr-x 3 lami20j lami20j 4096 2007-07-03 20:18 a drwxr-xr-x 3 lami20j lami20j 4096 2007-07-03 20:19 b -rw-r--r-- 1 lami20j lami20j 5 2007-07-03 20:17 fic.txt /home/lami20j/bonjovi/a: total 8 drwxr-xr-x 3 lami20j lami20j 4096 2007-07-03 20:17 aa -rw-r--r-- 1 lami20j lami20j 5 2007-07-03 20:18 fic2.txt /home/lami20j/bonjovi/a/aa: total 4 drwxr-xr-x 2 lami20j lami20j 4096 2007-07-03 20:17 aaa /home/lami20j/bonjovi/a/aa/aaa: total 0 /home/lami20j/bonjovi/b: total 8 drwxr-xr-x 2 lami20j lami20j 4096 2007-07-03 20:17 bb -rw-r--r-- 1 lami20j lami20j 5 2007-07-03 20:19 fic3.txt /home/lami20j/bonjovi/b/bb: total 0Les erreurs
lami20j@debian:~$ rgrep 'err' /home/lami20j/bonjovi/ /home/lami20j/bonjovi/a/fic2.txt:err2 /home/lami20j/bonjovi/fic.txt:err1 /home/lami20j/bonjovi/b/fic3.txt:err3L'exécution du script
lami20j@debian:~$ perl ccm.pl Veuillez entrer le chemin du dossier : /home/lami20j/bonjovi Veuillez entrer le message d'erreur que vous voulez rechercher : err2 **** FICHIER CONTENANT UNE ERREUR **** /home/lami20j/bonjovi/a/fic2.txt
Ok lami20j,
Cette solution me convient parfaitement. Je vois que tu as également optimisé le code. J'aurai quelques questions à te poser, si cela ne te dérange pas de me répondre.
1- Que signifie if (-f){
2 -Et que signifie `cat $_`
En tout cas, tout marche pour le mieux, c'est parfait.
Cette solution me convient parfaitement. Je vois que tu as également optimisé le code. J'aurai quelques questions à te poser, si cela ne te dérange pas de me répondre.
1- Que signifie if (-f){
2 -Et que signifie `cat $_`
En tout cas, tout marche pour le mieux, c'est parfait.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
4 juil. 2007 à 16:13
4 juil. 2007 à 16:13
si cela ne te dérange pas de me répondre
tu crois que je t'aurais donné ma version si ça m'aurait dérangé ?!!!! :-))
1- Que signifie if (-f){
il s'agit d'un test de fichiers
explicitement on écrit
-f $fichier
dans ce cas le teste et fait sur $_ qui est une variable implicite
donc pour des raisons de ma paresse, au lieu d'écrire if ( -f $_ ) j'ai écrit if (-f)
2 -Et que signifie `cat $_`
vu que tu es sous Linux, j'ai utilisé la commande système cat au lieu d'ouvrir les fichiers avec open
les apostrophes inverses `` permettent de capturer le STDOUT ce qui m'a permis de faire un grep (attention il s'agit de la fonction grep du Perl et pas de la commande système grep)
j'ai l'utilisé directement au lieu de stocker le résultat dans une variable (je pense que tu sais pourquoi :-))
pour Windows il faut écrire `type $_`
Si jamais tu n'arrives pas à taper les apostrophes inverses à cause de certaines restrictions tu peux utiliser à la place
qx{cat $_}
Voilà.
tu crois que je t'aurais donné ma version si ça m'aurait dérangé ?!!!! :-))
1- Que signifie if (-f){
il s'agit d'un test de fichiers
explicitement on écrit
-f $fichier
dans ce cas le teste et fait sur $_ qui est une variable implicite
donc pour des raisons de ma paresse, au lieu d'écrire if ( -f $_ ) j'ai écrit if (-f)
2 -Et que signifie `cat $_`
vu que tu es sous Linux, j'ai utilisé la commande système cat au lieu d'ouvrir les fichiers avec open
les apostrophes inverses `` permettent de capturer le STDOUT ce qui m'a permis de faire un grep (attention il s'agit de la fonction grep du Perl et pas de la commande système grep)
j'ai l'utilisé directement au lieu de stocker le résultat dans une variable (je pense que tu sais pourquoi :-))
pour Windows il faut écrire `type $_`
Si jamais tu n'arrives pas à taper les apostrophes inverses à cause de certaines restrictions tu peux utiliser à la place
qx{cat $_}
Voilà.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
4 juil. 2007 à 21:57
4 juil. 2007 à 21:57
-f - fichier regulier