OVH Cloud OVH Cloud

Remplacer tous les ".png" par des ".jpg"

15 réponses
Avatar
Olivier V
Bonjour,

Je cherche à remplacer toutes les occurrences ".png par des ".jpg"
dans TOUS les fichiers .html d'un répertoire.

Je suppose qu'il y a moyen de faire cela par une commande ...
mais progressant fort lentement,
je m'en remets à vous ...

Merci d'avance.

Olivier V

10 réponses

1 2
Avatar
Xavier Henner
Bonjour,

Je cherche à remplacer toutes les occurrences ".png par des ".jpg"
dans TOUS les fichiers .html d'un répertoire.

Je suppose qu'il y a moyen de faire cela par une commande ...
mais progressant fort lentement,
je m'en remets à vous ...



1) creer un script toto.sh

#!/bin/sh

cp $1 $1.old
cat $1.old | sed "s/.png/.jpg/gi" > $1


2)

find /path/to/dossier/ -name "*.html" -exec /path/to/toto.sh {} ;



quand on lance toto.sh fichier.txt, ca lit fichier.txt, le recopie dans
fichier.txt.old et rempace toutes les occurences de .png par des .jpg

le find prend tous les fichiers dans le dossier qui se finissent en .html et
execute toto.sh dessus

--
Xavier Henner

Avatar
christophe_news
Essaie 'sed'

qqchose comme : sed -e s/.png/.jpg
Avatar
Olivier V
Merci beaucoup.
C'est exctament ça.

Olivier V
Avatar
jip
bonjour,

dans mes tablettes, j'ai noté ça un jour:

se placer dans le dossier voulu et lancer ce script:

#!/bin/bash
for i in *.html; do
sed -e s/chaine1/chaine2/g $i > $i.new;
mv $i.new $i;
done;

(sous toutes réserves)

jip
Avatar
Nicolas George
jip wrote in message <41ef988b$0$25815$:
sed -e s/chaine1/chaine2/g $i > $i.new;


sed -e s/chaine2/chaine2/g -- "$i" > "$i".new

mv $i.new $i;


mv -- "$i".new "$i"

Sinon ça va foirer.

Avatar
Olivier V
Bonjour,

Je n'ai pas dû tout bien comprendre.
Avec

#!/bin/bash
for i in *.html; do
        sed -e s/png/jpg/g -- "$i" > "$i".new;
        mv -- "$i".new "$i";
done;

Cela ne marche pas.

Qu'ai je fait de mal ?

Olivier V
Avatar
Olivier V
Jean-Philippe Caruana wrote:

sed -e -i s/chaine1/chaine2/g $i


Suivant vos conseils, j'ai fait :

#!/bin/bash
for i in *.html; do
sed -e -i s/png/jpg/g $i;
done;

Mais cela ne fonctionne pas.
Qu'est ce qui est mauvais ?

Merci.

Olivier V

Avatar
Nicolas George
Olivier V wrote in message :
        sed -e s/png/jpg/g -- "$i" > "$i".new;
^

Note au passage : un && à la place de ce ; serait très bien venu.

Cela ne marche pas.


C'est normal, ça n'a pas de jambes.

Qu'ai je fait de mal ?


Dire « ça ne marche pas » sans plus.

Avatar
Olivier V
Nicolas George wrote:

Olivier V wrote in message :
sed -e s/png/jpg/g -- "$i" > "$i".new;
^

Note au passage : un && à la place de ce ; serait très bien venu.


Mais le problème rest entier ...

Avec :

#!/bin/bash
for i in *.html; do
        sed -e s/png/jpg/g -- "$i" > "$i".new &&
        mv -- "$i".new "$i";
done;

Ce n'est toujours pas bon :

[ essais2]$ ls
theme003.jpg* theme003.png* theme-3.html*
[ essais2]$ remplace_png_jpg3
/home/user/bin/convertisseurs/remplace_png_jpg3: line
3:         sed -e s/png/jpg/g -- theme-3.html : No such file or directory

Olivier V


Avatar
oli-cla
Bonjour,

Je cherche à remplacer toutes les occurrences ".png par des ".jpg"
dans TOUS les fichiers .html d'un répertoire.

Je suppose qu'il y a moyen de faire cela par une commande ...
mais progressant fort lentement,
je m'en remets à vous ...

Merci d'avance.

Olivier V
Salut,


Et ca ca marche pas par hasard ?

for ficpng in *.png
do
fictmp=$(ls $ficpng | cut -f 1 -d .)
ficjpg=$fictmp.jpg
mv $ficjpg $ficpng
done


salut,

1 2