Search and replace [script] - Linux et OS Alternatifs
Marsh Posté le 05-04-2005 à 15:01:32
1. regarde peut etre rename 
2. sed ou awk devrait faire l'affaire
Marsh Posté le 05-04-2005 à 15:05:27
salut, 
j'ai déjà cherché des infos sur seb et awk mais je capte rien 
 
 
tu pourrais m'aiguiller ? 
 
++
Marsh Posté le 05-04-2005 à 15:07:52
C'est quoi la question au juste? Tu veux remplacer toutes les occurences de .php par .php5 dans un fichier texte? 
 
Marsh Posté le 05-04-2005 à 15:09:28
dans tous les fichiers texte d'un répertoire et de ces sous-répertoires et aussi renomer les fichiers php en php5 
 
++
Marsh Posté le 05-04-2005 à 15:10:57
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 !
Marsh Posté le 05-04-2005 à 15:14:37
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'
Marsh Posté le 05-04-2005 à 15:17:23
| mr simon a écrit : tu peux faire quelquechose comme ça :    | 
On peut aussi utiliser un vrai shell et se contenter de find file in **/*.php 
  
 
| Citation : #Renomme les fichiers   | 
Il faut enlever les backquotes autour du mv et ça marche, mais eek quoi. mv "$file" "$file"\5. Ou un truc avec rename 
  
 
| Citation : #Change le contenu   | 
Pareil, il faut enlever les backquotes, et il faut rajouter -i à sed.
Marsh Posté le 05-04-2005 à 15:24:12
ben zut, je dois vraiment ête nul mais mais j'ai toujours la même erreur ![]()
Marsh Posté le 05-04-2005 à 15:32:14
ah génial 
  
ca remplace le nom des fichiers 
 
Comment remplacer dans le contenu des fichiers maitenant? 
 
++
Marsh Posté le 05-04-2005 à 15:36:45
| ohan a écrit : ah génial   | 
 
man sed 
 
sed -i 's/toto/tata/g' nomdufichier  | 
remplace toutes les occurrences de toto par tata dans le fichier nomdufichier.
Marsh Posté le 05-04-2005 à 15:39:22
| Pillow a écrit : man sed  
 remplace toutes les occurrences de toto par tata dans le fichier nomdufichier.  | 
 
 
le '<' je suis pas sur qu'il soit obligatoire
Marsh Posté le 05-04-2005 à 15:40:08
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. 
 
++
Marsh Posté le 05-04-2005 à 15:42:48
| l0ky a écrit : le '<' je suis pas sur qu'il soit obligatoire  | 
Exact, évidemment ça ne risque pas de marcher avec -i 
 
Marsh Posté le 05-04-2005 à 14:50:45
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
++