|
|
|
|
||||||
| fr.comp.os.unix Système UNIX. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 (permalink) |
|
Messages: n/a
Hébergeur: |
Bonjour,
je dois modifier un gros document LaTeX. Je dois remplacer dans tous les fichiers *.tex (y compris dans les sous répertoires) \section par \Section mais je ne sais pas trop comment m'y prendre. Merci de m'aider |
|
|
|
#2 (permalink) |
|
Messages: n/a
Hébergeur: |
2006-03-16, 09:26(+01), noone@nowhere.undef:
[...] > je dois modifier un gros document LaTeX. > > Je dois remplacer dans tous les fichiers *.tex (y compris dans les sous > répertoires) \section par \Section mais je ne sais pas trop comment m'y > prendre. [...] Avec zsh, je ferais tout simplement: perl -pi -e 's/\\section/\\Section/g' ./**/*.tex(.) Avec bash: find . -name '*.tex' -type f -exec perl -pi -e ' s/\\section/\\Section/g' {} + -- Stéphane |
|
|
|
#3 (permalink) |
|
Messages: n/a
Hébergeur: |
Bonjour,
Le 16-03-2006, Stephane Chazelas <cette.adresse@est.invalid> a écrit: > 2006-03-16, 09:26(+01), noone@nowhere.undef: > [...] >> je dois modifier un gros document LaTeX. >> >> Je dois remplacer dans tous les fichiers *.tex (y compris dans les sous >> répertoires) \section par \Section mais je ne sais pas trop comment m'y >> prendre. Faut-il aussi modifier de même la version étoilée, ainsi que \sectionheading \sectionlevel \sectionmark \sectionname quel que soit le contexte ? > [...] > > Avec zsh, je ferais tout simplement: > > perl -pi -e 's/\\section/\\Section/g' ./**/*.tex(.) Deux lettres de moins à taper avec «sed -i» (GNU Sed, version >=4 ![]() > Avec bash: > > find . -name '*.tex' -type f -exec perl -pi -e ' > s/\\section/\\Section/g' {} + Ce ne serait pas mieux avec find . -name '*.tex' -type f | xargs ... ? -- Jacques L'helgoualc'h |
|
|
|
#4 (permalink) |
|
Messages: n/a
Hébergeur: |
On Thu, 16 Mar 2006 09:26:13 +0000 (UTC), Jacques L'helgoualc'h wrote:
[...] >> Avec zsh, je ferais tout simplement: >> >> perl -pi -e 's/\\section/\\Section/g' ./**/*.tex(.) > > Deux lettres de moins à taper avec «sed -i» (GNU Sed, version >=4 ![]() Oui, mais GNU n'est pas Unix. >> Avec bash: >> >> find . -name '*.tex' -type f -exec perl -pi -e ' >> s/\\section/\\Section/g' {} + > > Ce ne serait pas mieux avec find . -name '*.tex' -type f | xargs ... ? Non, au contraire, pourquoi? xargs n'est pas compatible avec find (a moins d'utiliser des options specifiques a GNU ou BSD). -- Stephane |
|
|
|
#5 (permalink) |
|
Messages: n/a
Hébergeur: |
On Thu, 16 Mar 2006 09:26:13 +0000 (UTC), Jacques L'helgoualc'h wrote:
[...] >> Avec zsh, je ferais tout simplement: >> >> perl -pi -e 's/\\section/\\Section/g' ./**/*.tex(.) > > Deux lettres de moins à taper avec «sed -i» (GNU Sed, version >=4 ![]() Oui, mais GNU n'est pas Unix. >> Avec bash: >> >> find . -name '*.tex' -type f -exec perl -pi -e ' >> s/\\section/\\Section/g' {} + > > Ce ne serait pas mieux avec find . -name '*.tex' -type f | xargs ... ? Non, au contraire, pourquoi? xargs n'est pas compatible avec find (a moins d'utiliser des options specifiques a GNU ou BSD). -- Stephane |
|
|
|
#6 (permalink) |
|
Messages: n/a
Hébergeur: |
On Thu, 16 Mar 2006 09:26:13 +0000 (UTC), Jacques L'helgoualc'h wrote:
[...] >> Avec zsh, je ferais tout simplement: >> >> perl -pi -e 's/\\section/\\Section/g' ./**/*.tex(.) > > Deux lettres de moins à taper avec «sed -i» (GNU Sed, version >=4 ![]() Oui, mais GNU n'est pas Unix. >> Avec bash: >> >> find . -name '*.tex' -type f -exec perl -pi -e ' >> s/\\section/\\Section/g' {} + > > Ce ne serait pas mieux avec find . -name '*.tex' -type f | xargs ... ? Non, au contraire, pourquoi? xargs n'est pas compatible avec find (a moins d'utiliser des options specifiques a GNU ou BSD). -- Stephane |
|
|
|
#7 (permalink) |
|
Messages: n/a
Hébergeur: |
Le 16-03-2006, Stephane Chazelas a écrit:
> On Thu, 16 Mar 2006 09:26:13 +0000 (UTC), Jacques L'helgoualc'h wrote: > [...] >>> Avec zsh, je ferais tout simplement: >>> >>> perl -pi -e 's/\\section/\\Section/g' ./**/*.tex(.) >> >> Deux lettres de moins à taper avec «sed -i» (GNU Sed, version >=4 ![]() > > Oui, mais GNU n'est pas Unix. C'est bien pourquoi je précisais. >>> Avec bash: >>> >>> find . -name '*.tex' -type f -exec perl -pi -e ' >>> s/\\section/\\Section/g' {} + Le «+» n'est pas accepté par le find de debian sarge, il lui faut un «\;», «find» de GNU version 4.1.20 >> Ce ne serait pas mieux avec find . -name '*.tex' -type f | xargs ... ? > > Non, au contraire, pourquoi? Pour ne pas lancer une instance de perl par fichier, quand + ne marche pas. > xargs n'est pas compatible avec find (a moins d'utiliser des options > specifiques a GNU ou BSD). Ah oui, c'est plutôt find . -name '*.tex' -type f -print0 | xargs -0 ... Pour ne remplacer que \section (et \section*), mais pas \sectionmark(*) et autres, on peut utiliser 's/\\section\b/\\Section/g' (avec Perl comme avec GNU Sed v.4). (*) Utilisation à vérifier dans le style et/ou la classe maison... -- Jacques L'helgoualc'h |
|
![]() |
| Outils de la discussion | |
|
|