[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: remplacement occurence dans plusieurs fichiers



Wallace wrote:
Bonjour,
J'ai deplace une gallery photo faite avec Gallery, mais cette derniere ne marche plus
car dans beaucoup de fichiers sont mis en dur le pwd de la photo.
Il est impossible de faire le remplacement de ce chemin a la main un simple grep donne plusieurs centaines de resultats.

Quelle commande utiliser pour lui passer la chaine existante ex /home/toto/gallery/ , celle que l'on veut mettre en remplacement /home/sites/toto/gallery/ et un repertoire a parcourir en recursif?

Merci par avance



A tester avant de faire la commande !!! :

$cd <rep>

$ echo 'cat "$1" | sed "s/\/home\/toto\/gallery\//\/home\/sites\/toto\/gallery\//g" > "$1"' > cmd
$ chmod +x cmd
$ find . -type f -exec ./cmd {} \;


explications:
1- on crée un petit script shell qui contient la commande:

cat "$1" | sed "s/\/home\/toto\/gallery\//\/home\/sites\/toto\/gallery\//g" > "$1"

$1 étant le premier argument de la commande (donc ici, un nom de fichier).

sed s/toto/foo/g : remplace toutes les occurences de toto par foo (le g c'est pour remplacer toutes les occurences sur une même ligne, sans le g il ne remplacera que la premiere occurence de chaque ligne)

et on redirige toute ca dans le fichier.

Si tu veux savoir quel fichier est en cours de traitement,
ajoute un echo :
$cat cmd
echo -n $1 ...
cat "$1" | sed "s/\/home\/toto\/gallery\//\/home\/sites\/toto\/gallery\//g" > "$1"
echo Done.
$

2- on donne les droits d'execution sur le script
3-- pour chaque fichier de l'arborescence on execute la commande (man find).

Voilou, bonne chance

	Metaone.
ps: fais une copie du site et lance la commande SUR LA COPIE



Reply to: