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

  FORUM HardWare.fr
  Programmation
  Perl

  Batch Perl Replace

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Batch Perl Replace

n°2050534
grosbin
OR die;
Posté le 20-01-2011 à 18:05:25  profilanswer
 

Bonjour, afin de remplacer des textes / contenus sur mon serveur, j'utilise cette expression

find . -type f -iname '*.php' -exec perl -pi -w -e 's/texte à remplacer/remplacement/g;' {} \;


Or cette dernière modifie les dates de modification des fichiers, ces dernières que je souhaiterais conserver, remettre à l'état initial après ce passage ..
Je ne sais pas non plus combiner avec grep afin de modifier uniquement les fichiers contenant l'expression ..
 
Là immédiatement cette syntaxe m'a modifié tous les timestamps des fichiers sur mon serveur .. cela m'a foutu le dawa dans ma gestion de cache ..
 
En résumé : je cherche à modifier cette syntaxe afin de s'attaquer qu'aux fichiers contenant l'expression, tout en conservant leurs timestamp
 
A vos suggestions merci  :jap:


Message édité par grosbin le 20-01-2011 à 18:05:44

---------------
Photos Panoramiques Montagnes Haute Savoie
mood
Publicité
Posté le 20-01-2011 à 18:05:25  profilanswer
 

n°2050550
gilou
Modérateur
Modzilla
Posté le 20-01-2011 à 19:11:53  profilanswer
 

Sous Unix/Linux, dans un script perl, il faut procéder ainsi:
1) Récupérer les valeurs courantes:  ($atime, $mtime) = (stat($filename))[8,9];
2) faire ses modifs dans le fichier
3) Remettre les valeurs avant modif: utime $atime, $mtime, $file or die "Error setting timestamp for $file: $!\n";
cette 3e partie ne marche pas sous Windows (j'ai pas testé, c'est peut être maintenant bon dans une version récente), il faut passer par des fonctionnalités spécifiques de Win32API::File::Time.
use Win32API::File::Time qw{:win};
1)  ($atime, $mtime, $ctime) = GetFileTime ($filename);
2) ...
3)  SetFileTime ($filename, $atime, $mtime, $ctime);

 

>je cherche à modifier cette syntaxe afin de s'attaquer qu'aux fichiers contenant l'expression
Comme tu dois obligatoirement en lire le contenu, l'accesstime est modifié, que le fichier soit modifié ou non et donc il faut le remettre comme plus indiqué.
A+,


Message édité par gilou le 20-01-2011 à 19:23:42

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

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

  Batch Perl Replace

 

Sujets relatifs
Installer un module Perl cpan[Résolu] Convertir regexp Perl->Java
[Perl] Demande authentification avec le script mais pas avec Firefox[PERL] Probleme de splice avec un tableau a 2 dimensions
preg_replace [résolu][PERL] remplacement caractères dans une variable.
[PERL] Remplacement récursifAide sur l'execution d'un code en perl
[Perl] - Programmation objet et debugger[PERL?] interface texte avec gestion des touches directionnelles
Plus de sujets relatifs à : Batch Perl Replace


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