Subject: HS : modifier plusieurs fichiers d'un coup ?

From: [email-masked]
Date: Thu, 20 Jan 2022 10:08:57 +0100 (CET)

Bonjour et meilleurs vœux à tous (et longue vie à la liste) !

Je viens de me rendre compte que j'ai fait la même faute dans une centaine de partitions :

j'ai écrit : tagline = "www.xyz.fr"  

que je voudrais changer en : tagline = "xyz.fr"

Existe-t-il un moyen de tous les corriger d'un coup ? (je suis sous debian et je travaille avec frescobaldi)

Ça m'éviterait de tous les modifier 1 par 1 :/

D'avance merci,

David

---

From: Remy CLAVERIE <[email-masked]>
Date: Thu, 20 Jan 2022 11:01:06 +0100 (CET)

Hello,

J'utiliserais sed ainsi :

find /dossier/contenant/fichiers -type f -exec sed -i 's/à remplacer/remplacement/g' {} \;

A tester avant de faire des dégats....

Bonne journée,

Rémy

envoyé : 20 janvier 2022 à 10:08
de : [email-masked]
à : [email-masked]
objet : HS : modifier plusieurs fichiers d'un coup ?

D'avance merci,

David

---

From: Olivier Miakinen <[email-masked]>
Date: Thu, 20 Jan 2022 11:59:13 +0100

> Existe-t-il un moyen de tous les corriger d'un coup ? (je suis sous debian et je travaille avec frescobaldi)

L'avantage de travailler sous linux, et que les fichiers .ly soient
des fichiers textes...

Dans une fenêtre de terminal :
 sed --in-place 's/tagline = "www.xyz.fr"/tagline = "xyz.fr"/' *.ly

---

From: Jean Abou Samra <[email-masked]>
Date: Thu, 20 Jan 2022 12:53:07 +0100

> remplacer/remplacement/g' {} \;

Oui, ou

find /dossier/contenant/fichiers -name "*.ly" -exec sed -i 's/à 
remplacer/remplacement/g' {} \;

qui ne fait le remplacement que dans les
fichiers avec l'extension .ly. C'est à peu
près équivalent normalement, mais je me permets
de le signaler car il m'est arrivé une fois
de me faire avoir méchamment : j'ai fait
dans ma copie locale du dépôt des sources de
LilyPond une substitution sur absolument tous
les fichiers, sans réaliser que cela affecterait
aussi les fichiers internes du gestionnaire
de version, Git. Le dépôt est devenu corrompu, et
j'ai perdu plusieurs branches de travail comme cela…

Une bonne pratique est de fournir un argument
à l'option -i de sed comme ceci :

find /dossier/contenant/fichiers -name "*.ly" -exec sed -i".sauvegarde" 
"s/à remplacer/remplacement/g" {} \;

De la sorte, sed fait d'abord une sauvegarde de
chaque fichier dans "fichier.ly.sauvegarde"
avant de l'éditer. Si vous avez vérifié que
tout s'est bien passé, vous pouvez ensuite
supprimer les sauvegardes avec

find /dossier/contenant/fichiers -name "*.sauvegarde" -delete

Bien cordialement,
Jean

---

From: [email-masked]
Date: Wed, 26 Jan 2022 07:33:37 +0100 (CET)

Merci à tous ceux qui m'ont répondu, sur la liste ou en privé !

J'ai essayé en premier la solution de Jean, qui a très bien fonctionné, en 2 secondes environ pour plus d'une centaine de fichiers à modifier !

j'ai juste supprimé "/dossier/contenant/fichiers" et j'ai laissé "find -type f ...."

J'ai été surpris que ça modifie non seulement les fichiers du répertoire courant (que j'ai mis là pour faire mes tests), mais aussi ceux des sous-répertoires.

Mais bon, ça a très bien fonctionné, donc tout va bien :)

Existe-t-il également une ligne de commande pour compiler tous les nouveaux fichiers .ly (afin d'obtenir tous les pdf correspondants) ?

David

De : Jean Abou Samra <[email-masked]>
À : Remy CLAVERIE <[email-masked]>;
   [email-masked];
   [email-masked]
Sujet : Re: HS : modifier plusieurs fichiers d'un coup ?
Date : 20/01/2022 12:53:07 Europe/Paris

Oui, ou

Bien cordialement,
Jean

---

From: Jean Abou Samra <[email-masked]>
Date: Wed, 26 Jan 2022 21:20:20 +0100

Bonjour David,

Le 26/01/2022 à 07:33, [email-masked] a écrit :
> J'ai essayé en premier la solution de Jean, qui a très bien 
> fonctionné, en 2 secondes environ pour plus d'une centaine de fichiers 
> à modifier !
> J'ai été surpris que ça modifie non seulement les fichiers du 
> répertoire courant (que j'ai mis là pour faire mes tests), mais aussi 
> ceux des sous-répertoires.

Si vous ne voulez en fait pas modifier les fichiers contenus
dans des sous-répertoires, la chose devient beaucoup plus simple.
Il suffit d'utiliser les « jokers » (wildcards en anglais,
syntaxe *) du shell. Ainsi, *.ly est transformé par le shell
en la suite des noms de fichiers qui finissent par .ly.

sed -i "s/à remplacer/remplacement/g" *.ly

> Existe-t-il également une ligne de commande pour compiler tous les 
> nouveaux fichiers .ly (afin d'obtenir tous les pdf correspondants) ?

Même principe :

lilypond *.ly

Cordialement,
Jean

---

From: Jean Abou Samra <[email-masked]>
Date: Wed, 26 Jan 2022 21:21:18 +0100

Le 26/01/2022 à 21:20, Jean Abou Samra a écrit :
>> fonctionné, en 2 secondes environ pour plus d'une centaine de 
>> fichiers à modifier !

… ou plutôt pour être cohérent avec moi-même :

sed -i".sauvegarde" "s/à remplacer/remplacement/g" *.ly

Jean

---

From: [email-masked]
Date: Thu, 27 Jan 2022 08:29:17 +0100 (CET)

Ça a marché super bien, merci !

De : Jean Abou Samra <[email-masked]>
À : [email-masked];
   [email-masked]
Sujet : Re: HS : modifier plusieurs fichiers d'un coup ?
Date : 26/01/2022 21:21:18 Europe/Paris

Jean