logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

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

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

#1 19-01-2021 19:51:00

fred02840
Membre
Lieu : Aisne
Distrib. : Debian GNU/Linux trixie/sid
Noyau : Linux 6.6.15-amd64
(G)UI : Wayland
Inscription : 07-02-2018

Remplacement d'expressions dans tous les fichiers

Bonsoir,
Je bute sur un problème tout bête : j'ai commis une faute sur un mot dans de nombreux fichiers (tous en .odt), que je voudrais donc corriger. Comment faire ? J'ai vu des solutions ayant recours à "sed", mais cela ne fonctionne pas chez moi.

sed -i — ‘s/faute/correct/g’ *.odt*



Merci d'avance


Lenovo ThinkPad Edge E540, année 2013 (Intel Core i3-4000M x 4. Carte Intel HD Graphics 4600 HSW GT2).

Hors ligne

#2 19-01-2021 20:01:37

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Remplacement d'expressions dans tous les fichiers

bonsoir
l'option -i ne modifie pas le fichier

sed -e "s/mot_faux/mot_corrigé/g"  *.odt


https://debian-facile.org/doc:systeme:sed

Dernière modification par Croutons (19-01-2021 20:03:46)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#3 19-01-2021 20:07:37

fred02840
Membre
Lieu : Aisne
Distrib. : Debian GNU/Linux trixie/sid
Noyau : Linux 6.6.15-amd64
(G)UI : Wayland
Inscription : 07-02-2018

Re : Remplacement d'expressions dans tous les fichiers

Merci pour cette réponse très rapide. Mais ça coince :

sed: impossible de lire *.odt*: Aucun fichier ou dossier de ce type



J'ai cru bien faire en ajoutant * à .odt, car j'avais déjà cette même réponse.
Pour précision supplémentaire, les fichiers sont dans le répertoire utilisateur, mais cela ne change probablement pas grand chose à l'affaire (/home/etc.)


Lenovo ThinkPad Edge E540, année 2013 (Intel Core i3-4000M x 4. Carte Intel HD Graphics 4600 HSW GT2).

Hors ligne

#4 19-01-2021 20:37:03

cyrille
CA Debian-Facile
Lieu : Nowhere
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : Remplacement d'expressions dans tous les fichiers

je ne pense que l'on puisse agir ainsi sur un odt (ce n 'est pas un fichier texte).

sed: impossible de lire *.odt*: Aucun fichier ou dossier de ce type


attention *.odt est différent de *.odt*


SI tu fais un

cat aze.odt
Pɖ3R^2
       'mimetypeapplication/vnd.oasis.opendocument.textPɖ3RConfigurations2/accelerator/Pɖ3RConfigurations2/images/Bitmaps/Pɖ3RConfigurations2/toolpanel/Pɖ3RConfigurations2/progressbar/Pɖ3RConfigurations2/statusbar/Pɖ3RConfigurations2/toolbar/Pɖ3RConfigurations2/floater/Pɖ3RConfigurations2/popupmenu/Pɖ3RConfigurations2/menubarɖ3R
             manifest.rdf͓n0<e@/r(ʹj5X/޾VQF3ߎaȋT4c)%Hh+:.:ض+j*wn*9_-7
                            lϳ(x<O"8qH
                                            ƴ  Bi|9  fWQt렐y =:
aR @  LʄtNK3Q9`Ӄ<`+ވ
                                              ^཰\|hzczu#`2O;y.⯴vDl@ΣgUGPhɖ3meta.xmlSM0W WMH,`zZJEfI}lCoy3~o&{֕
Jr@q-*skOŧLHTh֠\Pc^/UF*/5njS*`ĹE5RjqG1JÚύNK҈Dt`!
                         4+AA6ų<6^*z
                                      qóT+9wC85F_ZY #|;/CPO;іɖ3R
                                                                               settings.xmlZs8"{J2I14 \߄`]dGS=F~C4O+(QV?UN@q9<ZWOwdCGf HsZOu!  2%4uu1zvu1˟/ؘ^fPMUj)"Z⋳Z5^~ncoTrJ,)7Xݜ,[frlʮ~};?f?rwvS&?L<2N]#|aԇ1A3fr
zQ;28G[64t1"&Ormev09ZvUmʶ\wyV+~ERծXcő=zd;Xv0.#1MgQRxa
                      LE͘^R?/KrKUޯM[A@h j)za
                                                          i`nzA'
),\l÷HVwAHO<($ .M_NI(G?$a|qaZ,kyɻv"DrC[4X2UBdr̹
         X\.D8') F&G
                         4-"
&Gߦ,>'Y܏<gߥܛLllQskw[_a66RpK,*jB)
                                                                             IaCET|*w9n5(МIl:'
*a|h.3gQ(.:7 OS<4@fEG
                                                                         1[-1qf1><<Di^B*L (=9.`}(je۰uW^amdagTVY>X[R?Wqg)&%(ӈF@"L)2=#a20T&N|(4]OۭݳNƚ= `i|J9j3[X(-)
S[bzPb)K33Zu
#؎      W%~mA@نR4M$aRo2Lf!@?=LX&|7 3X$+QX^\2'v<0CC7!٥c ZAR)xsseƞv?nn
J`
xH+춝<%A{Ǘ/L/0ۀ*tof`~bXJg/vNwX"Pd!Vy0QXzG>RTi`~,pg]yK^p  t֞JqS\
uGL`\+{|D5ӆOV
                      Me2cL㋅;d|hpɭv]՛LNʹR2ʡ$.d"
̄ƪ,P+RrGb/C5YjT
?V  zs?@!5tJ56u'ʶ+͝nY<pZOƩ\06-/q*L;i݋Úl
>Lܠlk3ދ-5 t(ޥ!亼Rz





Tu vois que le contenu est compressé donc directement via odt, AMA, ça ne passera. Il faudra sans doute convertir de format

Dernière modification par cyrille (19-01-2021 20:40:21)


"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

Hors ligne

#5 19-01-2021 20:37:49

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Remplacement d'expressions dans tous les fichiers

me suis fier au wiki mais on dirait qu'il y a une confusion entre option -e et -i
-e affiche les modification sur l'entrée standard (écran)
-i modifie bien le fichier

sed -i "s/mot_faux/mot_corrigé/g"  *.odt



sed intervient sur le dossier courant , sinon il faut lui spécifier le chemin

pwd

pour connaître le dossier courant


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#6 19-01-2021 20:45:08

fred02840
Membre
Lieu : Aisne
Distrib. : Debian GNU/Linux trixie/sid
Noyau : Linux 6.6.15-amd64
(G)UI : Wayland
Inscription : 07-02-2018

Re : Remplacement d'expressions dans tous les fichiers

Cyrille : merci, mais je n'ai rien compris à tous ces signes cabalistiques.
Croutons: j'essaie cette solution. C'est vrai que si on se déplace dans le bon répertoire, cela devrait faciliter les choses. Merci !

Lenovo ThinkPad Edge E540, année 2013 (Intel Core i3-4000M x 4. Carte Intel HD Graphics 4600 HSW GT2).

Hors ligne

#7 19-01-2021 20:53:48

fred02840
Membre
Lieu : Aisne
Distrib. : Debian GNU/Linux trixie/sid
Noyau : Linux 6.6.15-amd64
(G)UI : Wayland
Inscription : 07-02-2018

Re : Remplacement d'expressions dans tous les fichiers

Bon, c'est raté. Déplacement dans le bon répertoire avec cd, puis renouvellement de

sed -i "s/mot_faux/mot_corrigé/g"  *.odt



Résultat :

sed: impossible de lire *.odt: Aucun fichier ou dossier de ce type



J'ai essayé sans référence au format de fichier : ça tourne dans le vide… Donc ctrl-C pour arrêter tout cela.

Je dois être maudit.


Lenovo ThinkPad Edge E540, année 2013 (Intel Core i3-4000M x 4. Carte Intel HD Graphics 4600 HSW GT2).

Hors ligne

#8 19-01-2021 20:55:43

fred02840
Membre
Lieu : Aisne
Distrib. : Debian GNU/Linux trixie/sid
Noyau : Linux 6.6.15-amd64
(G)UI : Wayland
Inscription : 07-02-2018

Re : Remplacement d'expressions dans tous les fichiers

Cyrille : OK, j'ai compris (c'est le soir, désolé). Mais pourquoi "aze" ?
EDIT: trouvé. Tu as voulu compresser un fichier .odt nommé "aze". Je viens d'essayer avec l'un des miens, et, effectivement, j'obtiens un résultat similaire.
Donc, selon toi, il est absolument impossible de faire une recherche et remplacement d'un mot ou d'une chaîne de caractères avec des .odt ?

Dernière modification par fred02840 (19-01-2021 20:59:25)


Lenovo ThinkPad Edge E540, année 2013 (Intel Core i3-4000M x 4. Carte Intel HD Graphics 4600 HSW GT2).

Hors ligne

#9 19-01-2021 20:59:49

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Remplacement d'expressions dans tous les fichiers

c'est cyrille qui a raison , vu que le fichier n'est pas en texte brut on peux pas le modifier avec sed :-(
d'ou les cractéres tout bizzar
mais du coup si tu convertis ton fichier tu vas perdre ta mise en forme
tu devrais utiliser une extention pour faire un recherche /remplacé par lot
https://forum.openoffice.org/fr/forum/v … hp?t=29800
j'ai pas trop chercher cela doit exister pour libre office

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#10 19-01-2021 21:19:45

cyrille
CA Debian-Facile
Lieu : Nowhere
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : Remplacement d'expressions dans tous les fichiers

Il existe des façons de procéder en python , je pense. Vu que python sait lire un fichier odt . Il suffit d'écrire un script python qui se charge de lecture du fichier. Tu fais ton remplacement et tu réinjectes le fichier modifier
jette un oeil : https://pypi.org/project/odfpy/

Dernière modification par cyrille (19-01-2021 21:20:30)


"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

Hors ligne

#11 19-01-2021 21:20:09

cyrille
CA Debian-Facile
Lieu : Nowhere
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : Remplacement d'expressions dans tous les fichiers

Ensuite si une extension libreoffice existe, c'est sans doute plus simple wink

"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

Hors ligne

#12 20-01-2021 09:42:31

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Remplacement d'expressions dans tous les fichiers

Bon je viens de faire l'essai sur trois fichier odt avec l'extension (message #9)
ça fonctionne bien

edit:

dans un premier temps  récupérer l'extension
https://sourceforge.net/projects/aoo-ex … t/download

depuis writer Libreoffice , menu Outils, Gestionnaire des extensions
raccourci Ctrl+Alt+e

bouton Ajouter
Dans le dossier Téléchargements, selectionner le fichier de l'extension altsearch.oxt
puis bouton ouvrir
l'extension est installé et sera prise en compte au redémarrage de writer
un message demande si on veux redémarrer writer maintenant

l'extension apparait maintenant dans le menu édition
Alt.Rechercher & remplacer


depuis le gestionnaire de fichier, afficher les fichiers en vue détaillé, choisir le classement par type de fichier pour faciliter la selection
selectionner tous les fichiers a modifier , clique droite ouvrir avec writer

ouvrir l'extension depuis le menu édition
dans mon test sur trois fichier j'ai remplacer bonsoir par bonmatin
il suffit de remplir les champs, dans les options j'ai coché Mot entier uniquement

après cliquer sur le bouton lot
une liste de différente tache prédéfini apparait, on créé notre nouveau traitement par lot avec le bouton Enregistrer le lot
donner un nom pour ce traitement (mon remplacement)
mon remplacement apparaîtra dans la liste des taches

facultatif on peut cliquer sur le bouton editer pour voir la syntaxe dans le fichier de traitement un message peut prévenir que writer ne trouve d’éditeur de texte suivant l'environnement de Bureau (dans mon cas je lui est indiqué pluma comme editeur)
le fichier de config ~/.config/libreoffice/4/user/config s'ouvre et on retrouve notre traitement enregistré

[Name] mon remplacement
  [Find]Bonsoir
  [Replace]bonmatin
  [Parameters]   MsgOff  WholeWord  Regular  
  [Command] ReplaceAll
 



~~~~~~~~~~~~~~~~~~~~~~~~~~~
de retour sur le gestionnaire des traitements, sélectionner mon remplacement dans la liste puis cliquer sur le bouton
Multiple Execute>>

Une nouvelle fenetre s'ouvre MON REMPLACEMENT avec en dessous la liste de tous les fichiers ouvert
tout selectionner grace au bouton Select all
cliquer sur le bouton start
le nombre de modification apparaîtra dans une fenêtre pour chaque fichier traité
il faudra bien sur enregistrer les fichiers en quittant
Pour aller vite passer par le menu Fichier et choisir Tout enregistrer

note: je viens de m’apercevoir que un icône pour la recherche alternative a été créé dans la barre d'outil principale ce qui peut être pratique si on s'en sert souvent
désolé pour le pavé j’espère que tout est clair smile

Dernière modification par Croutons (20-01-2021 10:31:53)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#13 20-01-2021 14:08:15

fred02840
Membre
Lieu : Aisne
Distrib. : Debian GNU/Linux trixie/sid
Noyau : Linux 6.6.15-amd64
(G)UI : Wayland
Inscription : 07-02-2018

Re : Remplacement d'expressions dans tous les fichiers

Merci les gars : c'est vraiment sympa de vous être démenés comme cela. J'essaie les manip' tout à l'heure et je vous dikwa

Lenovo ThinkPad Edge E540, année 2013 (Intel Core i3-4000M x 4. Carte Intel HD Graphics 4600 HSW GT2).

Hors ligne

#14 05-02-2021 18:17:59

tuFek
Membre
Distrib. : Debian 10.7 Buster
Noyau : 4.19.0-14-amd64
(G)UI : Xfce-4
Inscription : 15-09-2017

Re : Remplacement d'expressions dans tous les fichiers

Hello,

Je me suis posé plus ou moins la même question l'an passé. J'avais trouvé une solution en bash, qui va sans doute à l'encontre de pas mal de bonnes pratiques (je débute), mais ça pourrait te donner une base. En tout cas ce script fonctionne chez moi.
Le truc à savoir c'est que les fichiers .odt sont en réalité des paquets .zip contenant plusieurs données de mise en page et de contenu (situé dans un fichier content.xml). On ne peut donc pas les traiter comme des fichiers textes classiques (e.g., voilà pourquoi  un sed ne fonctionnera pas). Une fois dézipé par contre, tu peux modifier le fichier content.xml avec awk/sed, puis reziper le tout pour reformer ton fichier corrigé.

Ça donne ça chez moi:


#!/bin/bash
#script de correction des fichiers .odt
function f_correction {
    mkdir -p "$fichier"_dump # dossier temporaire permettant de faire les manips
    cd "$fichier"_dump #se placer dans le dossier temporaire
    unzip ../"$fichier" #extraction du fichier .odt
    sed -i "s/faute/correction/g" content.xml #correction de l'expression dans le fichier xml
    zip -0 -X ../correction_"$fichier".odt mimetype #zip du mimetype (à faire en premier et à part, je ne sais plus pourquoi mais c'est indispensable)
    zip -r ../correction_"$fichier".odt * -x mimetype #recompression du fichier .odt corrigé
    cd ..
    rm -r "$fichier"_dump #suppression du dissier temporaire
}

for fichier in *odt; do
    f_correction
done

exit 0
 


Voilou, j'espère que ça t'aidera!

Dernière modification par tuFek (05-02-2021 18:43:09)


Homo sum, et nihil humanum a me alienum puto

Hors ligne

#15 23-03-2021 13:26:18

fred02840
Membre
Lieu : Aisne
Distrib. : Debian GNU/Linux trixie/sid
Noyau : Linux 6.6.15-amd64
(G)UI : Wayland
Inscription : 07-02-2018

Re : Remplacement d'expressions dans tous les fichiers

Merci beaucoup !

Lenovo ThinkPad Edge E540, année 2013 (Intel Core i3-4000M x 4. Carte Intel HD Graphics 4600 HSW GT2).

Hors ligne

Pied de page des forums