Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplacement URL dans arborescence

7 réponses
Avatar
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.

7 réponses

Avatar
Patrice Karatchentzeff
"Mihamina Rakotomandimby (R12y)" a écrit :

[...]

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
    '---''(_/--'  `-'_)       

Avatar
espie
In article ,
Patrice Karatchentzeff wrote:
# 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...

Avatar
Patrice Karatchentzeff
(Marc Espie) a écrit :

In article ,
Patrice Karatchentzeff wrote:
# 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
    '---''(_/--'  `-'_)       


Avatar
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.
J'ai meme trouvé http://www.perlmonks.org/?node_id0020 qui m'aidera à
telecharger du serveur de production et tout...

Avatar
Patrice Karatchentzeff
"Mihamina Rakotomandimby (R12y)" a écrit :

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
    '---''(_/--'  `-'_)       


Avatar
espie
In article ,
Patrice Karatchentzeff wrote:
(Marc Espie) a écrit :

In article ,
Patrice Karatchentzeff wrote:
# 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...



Avatar
Nicolas George
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.