Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 13-10-2009 09:08:23

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Script - sed - modifier en série une "chaîne de caractères"

ATTENTION !
L'usage de la commande find demande une bonne compréhension de ce que l'on fait !

Pour supprimer la chaîne de caractères "IMG_" imposée dans mes fichiers php, je lance, depuis le répertoire les contenant :

$ cd /chemin/du/repertoire/
# find  -type f -print0 | xargs -0 sed -i 's/IMG_//g'


A noter que la commande peut renommer tout aussi bien la chaîne de caractères... big_smile

Par exemple :

$ cd /chemin/du/repertoire/
# find  -type f -print0 | xargs -0 sed -i 's/IMG_/paysage_/g'


Remplace "IMG_" par "paysage_" !


"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#2 13-10-2009 12:54:06

Geai dechaine
Membre
Lieu : Provence
Distrib. : Squeeze 6.0
Noyau : 2.6.32-5-686
(G)UI : Gnome 2.30.2
Inscription : 25-06-2009

Re : Script - sed - modifier en série une "chaîne de caractères"

Salut,

Autre possibilité, associer find à exec, genre

find . -type f -exec sed -i "s/IMG_/paysage_/g" {} \;


pc Medion MT6, cg ATI X300SE. J'utilise aptitude.

Hors ligne

#3 14-10-2009 16:38:58

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : Script - sed - modifier en série une "chaîne de caractères"

Ou bien sûr :

find . -type f -exec sed -i "s/IMG_/paysage_/g" {} \+


Le + à la fin permetttant le traitement des fichiers en série et non plus un par un. C'est à dire que find passe au fichier suivant sans reprise de tous les fichiers à chaque fois.

Merci Geai déchaine !

Complément à la commande sed :

Il peut arriver que nous souhaitions renommer avec des slash par exemple.
Il suffit de remplacer les slash de la commande par des virgules par exemple, ainsi :

find . -type f -exec sed -i "s,/IMG_,/paysage_,g" {} \+


Et ainsi, plus besoin d'échappement \ à utiliser, avec les risques d'écriture possible.

Merci à StalkR pour son amical intervention sur le chan #debianfr. smile

Amitié, Joel

Dernière modification par smolski (06-07-2010 19:08:13)


"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

Pied de page des forums