Remplacement URL dans arborescence

Le
Mihamina Rakotomandimby (R12y)
Bonjour,

Je programme très peu dans beaucoup de langage.
Il m'a toujours été dit que Perl était fait pour le "traitement" de texte.

J'ai un "gros site" intranet (50Mo de scripts en PHP et Javascript, hors
images et fichier binaires) qui se connecte à plusieurs serveurs SQL et
dont certaines URL contenues dedans sont codées en dur.

Je souhaite pouvoir dupliquer ce site pour que chacun des
testeurs/developpeurs) en ait sa copie locale sur son portable, par
exemple, dans un but d'expérimentation.

Pour ça, il y a besoin de transformer les chaines du genre:
serveur-sql01.localdomain
en
localhost

et dans tous les srcipts PHP remplacer toute allusion en serveur en
production par localhost.
J'ai déjà de quoi dupliquer la base de donnée (dump serveur + restore sur
chaque machine).

Je cherche donc un document traitant de cet aspect de Perl qui me
conviendrait, avec parcours recursif de l'arborescence, si vous en
connaissez un.

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice Karatchentzeff
Le #145181
"Mihamina Rakotomandimby (R12y)"
[...]

Je souhaite pouvoir dupliquer ce site pour que chacun des
testeurs/developpeurs) en ait sa copie locale sur son portable, par
exemple, dans un but d'expérimentation.

Pour ça, il y a besoin de transformer les chaines du genre:
serveur-sql01.localdomain
en
localhost

et dans tous les srcipts PHP remplacer toute allusion en serveur en
production par localhost.
J'ai déjà de quoi dupliquer la base de donnée (dump serveur + restore sur
chaque machine).

Je cherche donc un document traitant de cet aspect de Perl qui me
conviendrait, avec parcours recursif de l'arborescence, si vous en
connaissez un.


# cd répertoire-qui-va-bien
# find . -type f -exec perl -pi .bak -e 's/serveur-sql01.localdomain/localhost/g' {} ;

Mais perl est presque anecdotique ici...

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       

espie
Le #145180
In article Patrice Karatchentzeff
# cd répertoire-qui-va-bien
# find . -type f -exec perl -pi .bak -e
's/serveur-sql01.localdomain/localhost/g' {} ;

Mais perl est presque anecdotique ici...

PK


Surtout que File::Find sait faire la meme chose en interne...

Patrice Karatchentzeff
Le #145179
(Marc Espie) a écrit :

In article Patrice Karatchentzeff
# cd répertoire-qui-va-bien
# find . -type f -exec perl -pi .bak -e
's/serveur-sql01.localdomain/localhost/g' {} ;

Mais perl est presque anecdotique ici...

PK


Surtout que File::Find sait faire la meme chose en interne...


oui mais c'est plus long à taper :)

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       


Mihamina Rakotomandimby (R12y)
Le #145178
Patrice Karatchentzeff wrote:
# find . -type f -exec perl -pi .bak -e
# 's/serveur-sql01.localdomain/localhost/g' {} ;
Mais perl est presque anecdotique ici...


Voilà.
Tu sais, c'est faire un zoli script Perl qui cherche lui meme dans
l'arborescence qui me plairait.
J'ai meme trouvé http://www.perlmonks.org/?node_id0020 qui m'aidera à
telecharger du serveur de production et tout...

Patrice Karatchentzeff
Le #145176
"Mihamina Rakotomandimby (R12y)"
Patrice Karatchentzeff wrote:
# find . -type f -exec perl -pi .bak -e
# 's/serveur-sql01.localdomain/localhost/g' {} ;
Mais perl est presque anecdotique ici...


Voilà.
Tu sais, c'est faire un zoli script Perl qui cherche lui meme dans
l'arborescence qui me plairait.


Ben, c'est à peine plus compliqué....

perl -e 'use File::Find::Rule ; my @files=File::Find::Rule->file()->in("./") ; for my $file (@files) {
print $file, "n" }'

(j'ai fait un print : tu fais la substitution à la place. Tu vires
aussi le one-liner qui est lourd et tu paramétrises le path).

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       


espie
Le #145175
In article Patrice Karatchentzeff
(Marc Espie) a écrit :

In article Patrice Karatchentzeff
# cd répertoire-qui-va-bien
# find . -type f -exec perl -pi .bak -e
's/serveur-sql01.localdomain/localhost/g' {} ;

Mais perl est presque anecdotique ici...

PK


Surtout que File::Find sait faire la meme chose en interne...


oui mais c'est plus long à taper :)


Ca presente l'enorme avantage que tu peux filtrer des choses...
Eviter de convertir en aveugle des trucs qui ne doivent pas l'etre
comme des images par exemple. Ou adapter la conversion au type
de fichier (si on a une facon plus fute-fute de faire, par exemple
analyser les url dans du html, convertir les emplacements dans les
fichiers php). Bref, ca va vite etra payant...



Nicolas George
Le #145174
Patrice Karatchentzeff wrote in message
perl -e 'use File::Find::Rule ; my @files=File::Find::Rule->file()->in("./") ; for my $file (@files) {
print $file, "n" }'


perl -MFile::Find -e 'find sub { print $File::Find::name, "n" }, "."'

Ça a en plus l'avantage de ne pas constituer de liste de fichiers en
mémoire.

Publicité
Poster une réponse
Anonyme