#1 Le 27/02/2025, à 21:11
- domirock
Rechercher /remplacer .. en plus compliqué
Bonjour.
J'ai remanié mon dokuwiki. je dois modifier de nombreux liens.
Je rêverais d'un script qui
> saurait trouver une chaine donnnée à l'intéreiur d'un (très) grand nombre de fichiers texte (certains la contiennent, d'autres pas. Ceux qui la contiennent peuvent la contenir 1 ou plusieurs fois)
> saurait remplacer cette chaîne par une autre passée en argument.
Ca se peut ???
Merci à tous
Hors ligne
#2 Le 27/02/2025, à 21:47
- nany
Re : Rechercher /remplacer .. en plus compliqué
Bonjour,
S’il n’y a qu’un répertoire ne contenant que des fichiers texte, une simple commande sed telle que
sed -i 's/regex/replacement/g' /chemin/du/répertoire/*
devrait suffire.
Hors ligne
#3 Le 27/02/2025, à 22:00
- domirock
Re : Rechercher /remplacer .. en plus compliqué
Merci nany.
Il y a plusieurs (beaucoup) de répertoires . Sinon, ce ne serait pas drôle.
Je ne connais pas sed. la commande serait
sed -i 's/regex/ texte à chercher/texte de remplacement/g' /chemin du rép/*
?
Hors ligne
#4 Le 27/02/2025, à 22:32
- Watael
Re : Rechercher /remplacer .. en plus compliqué
oui, ça se peut.
moi, je rêverais que des patates poussent dans mon jardin, mais ça n'arrivera pas si je ne le bêche pas.
il y a un pré-requis avant de demander de l'aide, c'est d'avoir bosser "un peu" le sujet; c'est dans la charte que tu as acceptée en t'inscrivant.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 27/02/2025, à 23:38
- hotnuma
Re : Rechercher /remplacer .. en plus compliqué
Un truc dans ce style devrait marcher :
find . -name *.txt -exec sed -i s/bla/blie/g {} \;
Rechercher tous les fichiers .txt dans le répertoire courant et remplacer toutes les occurrences de "bla" par "blie".
https://doc.ubuntu-fr.org/sed#astuces_en_vrac
En étant prudent avec les commandes récursives.
Dernière modification par hotnuma (Le 27/02/2025, à 23:51)
Xfce 4.18 / https://github.com/hotnuma
Hors ligne
#6 Le 28/02/2025, à 08:53
- domirock
Re : Rechercher /remplacer .. en plus compliqué
Merci Hotnuma
Find: j'en connais la puissance
Ecxec, c'est mystérieux
Sed, c'est nébuleux.
Tu m'offres une commande qui complète celle de Nany et un lien. J'ai un objectif.
Je vais jouer avec ... sans oublier tes conseils de prudence ;-)
Je sens que je vais comprendre des choses
Je vois que jamais ne n'aurais pensé à assembler ces trois élements
Merci à vous deux
En route :-))
Hors ligne
#7 Le 28/02/2025, à 10:24
- nany
Re : Rechercher /remplacer .. en plus compliqué
Bonjour,
Je ne connais pas sed. la commande serait
sed -i 's/regex/ texte à chercher/texte de remplacement/g' /chemin du rép/*
?
Non, regex c’est le texte à chercher. Donc c’est plutôt :
sed -i 's/texte à chercher/texte de remplacement/g' /chemin du rép/*
Mais, comme il y a plusieurs répertoires, la commande de hotnuma devrait faire l’affaire.
Il y a aussi, au §3.3 de la page de doc qu’il a indiquée, cette commande :
grep -rl 'texte_à_rechercher_par_exple_ma_pomme' /repertoire_ou_commencer_la_recherche | xargs sed -i 's/ma_pomme/ma_poire/g'
qui me semble parfaite car elle va faire une liste de tous les fichiers du répertoire de recherche et de ses sous-répertoires contenant le texte à chercher puis va passer le sed uniquement à ces fichiers.
Hors ligne
#8 Le 28/02/2025, à 10:29
- nany
Re : Rechercher /remplacer .. en plus compliqué
Find: j'en connais la puissance
Ecxec, c'est mystérieux
Sed, c'est nébuleux.
Pour enrichir ta culture :
man find
man sed
info sed
Bonne lecture.
Hors ligne
#9 Le 28/02/2025, à 15:03
- domirock
Re : Rechercher /remplacer .. en plus compliqué
Merci encore Nany.!!
JE vais devenir un cador de la console :-))) (enfin, à ma mesure...)
Hors ligne