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

  FORUM HardWare.fr
  Linux et OS Alternatifs

  [script] Search and replace

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[script] Search and replace

n°658999
ohan
Posté le 05-04-2005 à 14:50:45  profilanswer
 

salut à tous,
Est ce qu'il existe une commande pour chercher et remplacer dans un répertoire:
-tous les fichiers .php par exemple en .php5
-dans le contenu de tous les fichiers ayant .php par .php5
 
Merci pour votre aide
++

mood
Publicité
Posté le 05-04-2005 à 14:50:45  profilanswer
 

n°659011
l0ky
Posté le 05-04-2005 à 15:01:32  profilanswer
 

1. regarde peut etre rename
2. sed ou awk devrait faire l'affaire

n°659015
ohan
Posté le 05-04-2005 à 15:05:27  profilanswer
 

salut,
j'ai déjà cherché des infos sur seb et awk mais je capte rien :)
 
tu pourrais m'aiguiller ?
 
++

n°659019
Pillow
'cos the trees won't talk
Posté le 05-04-2005 à 15:07:52  profilanswer
 

C'est quoi la question au juste? Tu veux remplacer toutes les occurences de .php par .php5 dans un fichier texte? :??:

n°659021
ohan
Posté le 05-04-2005 à 15:09:28  profilanswer
 

dans tous les fichiers texte d'un répertoire et de ces sous-répertoires et aussi renomer les fichiers php en php5
 
++

n°659023
mr simon
Posté le 05-04-2005 à 15:10:57  profilanswer
 

tu peux faire quelquechose comme ça :  
 
for file in `find . -name '*.php'
do
#Renomme les fichiers
newfile=`echo $file | sed 's/.php/.php5/'`
`mv $file $newfile
 
#Change le contenu
`sed 's/.php/.php5/g' < $newfile`
 
done
 
 
J'espere que ça marche.
 
ciao
 
Edit: J'avais oublié des ' dans le deuxième sed, peut-$etre que ça marche sans !


Message édité par mr simon le 05-04-2005 à 15:12:38
n°659026
ohan
Posté le 05-04-2005 à 15:14:37  profilanswer
 

merci, j'ai une petite erreur :  
./script.sh: line 5: syntax error near unexpected token `|'
./script.sh: line 5: `  newfile=`echo $file | sed 's/.php/.php5/'``mv $file $newfile'

n°659027
Pillow
'cos the trees won't talk
Posté le 05-04-2005 à 15:17:23  profilanswer
 

mr simon a écrit :

tu peux faire quelquechose comme ça :  
 
for file in `find . -name '*.php'
do

On peut aussi utiliser un vrai shell et se contenter de find file in **/*.php :o  
 

Citation :

#Renomme les fichiers
newfile=`echo $file | sed 's/.php/.php5/'`
`mv $file $newfile`

Il faut enlever les backquotes autour du mv et ça marche, mais eek quoi. mv "$file" "$file"\5. Ou un truc avec rename :o  
 

Citation :

#Change le contenu
`sed 's/.php/.php5/g' < $newfile`

Pareil, il faut enlever les backquotes, et il faut rajouter -i à sed.


Message édité par Pillow le 05-04-2005 à 15:18:09
n°659031
ohan
Posté le 05-04-2005 à 15:24:12  profilanswer
 

ben zut, je dois vraiment ête nul mais mais j'ai toujours la même erreur :(

n°659033
Pillow
'cos the trees won't talk
Posté le 05-04-2005 à 15:27:43  profilanswer
 

Il manque un backquote à la fin du find aussi [:petrus75]

mood
Publicité
Posté le 05-04-2005 à 15:27:43  profilanswer
 

n°659034
ohan
Posté le 05-04-2005 à 15:32:14  profilanswer
 

ah génial :)  
ca remplace le nom des fichiers :)
Comment remplacer dans le contenu des fichiers maitenant?
 
++

n°659036
Pillow
'cos the trees won't talk
Posté le 05-04-2005 à 15:36:45  profilanswer
 

ohan a écrit :

ah génial :)  
ca remplace le nom des fichiers :)
Comment remplacer dans le contenu des fichiers maitenant?
 
++


man sed :o

sed -i 's/toto/tata/g' nomdufichier

remplace toutes les occurrences de toto par tata dans le fichier nomdufichier.


Message édité par Pillow le 05-04-2005 à 15:45:16
n°659037
l0ky
Posté le 05-04-2005 à 15:39:22  profilanswer
 

Pillow a écrit :

man sed :o

sed -i 's/toto/tata/g' < nomdufichier

remplace toutes les occurrences de toto par tata dans le fichier nomdufichier.


 
le '<' je suis pas sur qu'il soit obligatoire

n°659038
ohan
Posté le 05-04-2005 à 15:40:08  profilanswer
 

ah, c'est bien ce que je pensais :)
g compris ce qui n'allait pas:
1.j'ai testé avec des fichiers php vide
2.j'ai ajouté du contenu au fichier php5 et forcement, ca ne fonctionnait aps car il travaille qu'avec les .php
 
 
Merci à tous pour votre aide.
 
++

n°659040
Pillow
'cos the trees won't talk
Posté le 05-04-2005 à 15:42:48  profilanswer
 

l0ky a écrit :

le '<' je suis pas sur qu'il soit obligatoire

Exact, évidemment ça ne risque pas de marcher avec -i [:petrus75]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  [script] Search and replace

 

Sujets relatifs
script cgiKernel panic quand je stop le service Lotus Domino via un script
[Script shell] - Deduire d'un nom en majuscules le meme en minuscules[LINUX] Search and destroy
Script Unix pour compter des fichiers dans une arborescenceexecution script au demarrage
[script] Problème de su dans mon scriptprbl putty + script
Enregistrer la date dans un script [résolu] 
Plus de sujets relatifs à : [script] Search and replace


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