[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
- Acces rapide - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Privilege d'acces aux fichiers insuffisants - Forum Windows
- Renommer plusieurs fichiers en même temps - Guide
- Explorateur de fichiers - Guide
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 569
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
Utilisateur anonyme
4 juil. 2007 à 15:40
4 juil. 2007 à 15:40
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 569
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 569
4 juil. 2007 à 21:57
4 juil. 2007 à 21:57
-f - fichier regulier