Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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.

En 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. tongue

Dernière modification par hotnuma (Le 27/02/2025, à 23:51)

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,



domirock a écrit :

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.

En ligne

#8 Le 28/02/2025, à 10:29

nany

Re : Rechercher /remplacer .. en plus compliqué

domirock a écrit :

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. wink

En 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