TXTRPL 4.5 : un chercher-remplacer qui n'est pas pour les tapettes.
TXTRPL : un chercher-remplacer qui n'est pas pour les, euh lavettes.
Cher visiteur, vous êtes le bienvenu de télécharger les logiciels de ce site
et d'en faire ce que vous voulez SAUF les redistribuer ou les rediffuser
par un quelconque moyen de masse ou autre (Web, Intranet, CD-ROM, etc.), gratuit ou payant,
sans mon autorisation expresse.
Tous droits réservés par Mon Altesse.
En revanche si vous mettez un lien vers cette page vous aurez droit
à un lien réciproque (on est quand même poli) dans la rubrique
"Spécial copinage" à la fin de cette page.
English version here. Version 4.5 du 25 mai 2002. Maintenant optimisé.
Actions possibles :
Recherche simple,
Remplacement normal (option /r),
Supprimer les Lignes contenant le texte recherché
(option /sl),
Supprimer les Lignes NE contenant PAS le texte recherché
(option /nsl) - ces deux dernières options sont
bien utiles pour élaguer les énormes fichiers-journal, ou les résultats
produits par l'excellent FILEMON
Change la date du fichier (option /Touch), comme le Touch de Unix.
Exécution d'une commande
(option /Exec).
N'oubliez pas que sous Windoze, l'ordre
"Start" lance un document en s'aidant de l'association définie
dans l'Explorateur. Si par exemple vous tapez
txtrpl *.htm? chercheur /exec"start %1", vous démarrerez (avec
votre navigateur habituel) tous les fichiers HTML du répertoire contenant le mot "chercheur".
Si vous tapez
txtrpl *.* "fuzzy" /s /exec"copy %1 d:\temp\fuzzy\", vous copierez
tous les fichiers du répertoire et de ses sous-répertoires contenant le mot "fuzzy" vers
le répertoire "d:\temp\fuzzy\".
Pour spécifier où chercher :
balayage des sous-répertoires
(/s),
balayage de l'ensemble des disques durs
(/dd),
possibilité d'exclure tel ou tel répertoire de
la recherche (pratique pour ignorer OLD ou BACKUP)
(/xd),
* et
?
sont bien sûr admis dans les noms de fichiers,
Pour spécifier quoi chercher :
option mot uniquement entier (/w),
option mot uniquement en début de ligne
(/dl),
option mot uniquement en fin de ligne (/fl),
option Nombre maximum de remplacements
(/n),
recherche floue (/flou)
ou "approximative" c'est-à-dire que si vous tapez
"différence" et cochez cette option, TXTRPL obtiendra toutes
les occurrences du mot "différence" mais aussi par exemple,
"difference", "différent" et même "zifférence"
seront aussi retrouvés.
C'est plus pratique qu'on ne pourrait le croire car quand vous cherchez
"long filename" c'est pratique de récupérer en même
temps "long file name".
4 niveaux de bavardise (/b0
à /b3,
resp. pas du tout, un peu, moyennement et beaucoup).
/b0 : aucun affichage;
/b1 : affiche les noms des fichiers
où le texte voulu a été trouvé;
/b2 : affiche les noms des fichiers
où le texte voulu a été trouvé et les lignes contenant ce texte. La largeur d'affichage
est normalement 80 caractères pur un affichage à l'écran, mais si vous sauvegardez
les occurrences avec l'option /Log, vous pouvez
indiquer une valeur supérieure, par exemple 100 ou 110 chars.
/b3 : affiche le voisinage
(N lignes avant et après, N régi par l'option
/H).
Recherche en fonction de la casse (minuscules/majuscules) :
/m0 : ignorer;
/m1 : remplacer (ou afficher) seulement si identique;
/m2 : remplacer seulement si différent,
/m3 : Imiter la casse (c'est-à-dire
que txtrpl *.txt main pied /m3
remplacera "main" par "pied", "MAIN" par "PIED" et "Main" par "Pied". Habile, non ?).
Version Windows : Possibilité de charger et sauvegarder les options données
(merci à Alain Beyrand)
Version Windows : 2 langues en une seule version (cliquez sur le drapeau).
Pratique pour les cousins canadiens !
L'option /DST
vous permet de préciser le nom du fichier de destination (seulement
si vous travaillez sur un seul fichier). Utile pour éclater un gros fichier (journal)
en plusieurs petits différents, avec plusieurs valeurs
de l'option /NSL.
Possibilité de sauvegarder les résultats de la
recherche dans un fichier texte (TXTRPL.LOG par défaut)
(/Log).
Tout cela va vite : 1300 kO/s sur un P2-350, 900 kO/s pour la
recherche floue. La vitesse dépend de votre disque beaucoup plus que de votre processeur,
surtout si vous avez beaucoup de petits fichiers.
Je l'ai pondu après avoir vainement cherché
(à l'époque, 1998) sur le Web un
utilitaire suffisamment puissant (notamment la récursion dans les
sous-répertoires et bien sûr la recherche approximative).
"Rechercher" de Windows 95 présente aussi à mon goût
quelques lacunes, notamment il n'affiche pas l'environnement des occurrences,
ne permet pas la recherche sélective de mots entiers, etc.
Dans la pratique, je mets tous les fichiers contenant des informations textuelles
sur le même lecteur, que je balaie quand j'en ai besoin. C'est bien pratique, surtout
avec les gros disques durs de maintenant, où l'on peut recopier des CDs entiers.
Fonctionne sous Vieux DOS (3.0 à 6.2) et DOS 7
(dans une fenêtre console de Windows ou NT) ou sous
Windows 95 ou NT, comme ci-dessus.
Pour rechercher des caractères non imprimables,
donnez leur code ASCII après un antislash, p. ex.:
"\10" (ASCII 10 : saut de ligne).
Les jokers * et
? sont permis dans le masque de fichier.
Attention, les fichiers binaires sont normalement ignorés,
désactivez l'option "Ignorer les fichiers binaires"
(/IB) si besoin !
Cette option se désactive d'elle-même (fort logiquement)
s'il y a des caractères non imprimables (ASCII 1 à 31) dans la
chaîne à chercher.
La version Windows
Pour chercher/remplacer dans un seul fichier ou dans un répertoire,
glissez-lâchez-le sur
l'icône de TXTRPL95. TXTRPL95 ne démarre pas tout de suite et
vous pouvez régler les options avant de démarrer.
Pratique si on n'a pas envie de taper un long
chemin dans la fenêtre.
Vous pouvez couper-coller des caractères non imprimables sans
précaution particulière.
La case devant
Remplacer par :
est non cochée (par sécurité).
La version DOS/Console
La version console ne remplace rien
si vous ne mentionnez pas
l'option /r
(par sécurité ; un message et un signal sonore
vous préviennent). En revanche les options /Exec, /Touch, /SL et /NSL
ne jouissent pas de la même sécurité.
Pour rechercher des guillemets, un antislash, mettez-les
après un antislash, p. ex.:
\" ou \\.
Pour rechercher des signes %,
il faut ruser (la console les
interprète avant de les passer), mettez-les
après un antislash :
\%.
Vous pouvez aussi mettre les options dans un fichier,
par exemple options.txt,
et lancer TXTRPL
par TXTRPL @options.txt.
C'est même obligatoire s'il y en a pour plus de 128 caractères
(la console DOS n'en accepte pas plus).
Les longueurs maxi des chaînes à chercher ou remplacer
sont de 800 chars.
Exemples d'utilisation
txtrpl *.htm? "<Meta" "\9<Meta" /DL /r /p
et txtrpl *.htm? "<Title" "\9<Title" /DL /r /p
mettront tous les éléments de vos en-têtes HTML en retrait d'une
tabulation (ASCII 9), pour faire joli (et clair). L'option
/DL
("début de ligne") assure qu'il n'y aura de tabulation insérée que
si le "<XXX" n'est pas déjà en retrait.
/p et
/v0 indiquent qu'on ne veut pas voir les détails
(Pas de
Pause,
baVardise 0).
Les guillemets sont ici indispensables sinon la console interprète
les < et > d'une manière qui n'est pas celle que nous voulons.
txtrpl *.txt "\13" "\13\10" /r /p,
puis txtrpl *.htm? "\13\10\10" "\13\10" /r /p
remplace les fins de ligne à la Unix par des fins de ligne à la DOS.
La deuxième passe évite les duplications si le fichier possédait
les 2 sortes de fin de ligne.
un fichier batch contenant
txtrpl d:\src\*.? %1 /touch /xddvqm /p
mettra à jour (en touchant) tous les fichiers
*.c et *.h
contenant l'argument fourni (qui prend la place de
%1)
sous d:\src\,
et en évitant de perdre du temps à balayer les
répertoires nommés
DVQM (ceux où
je mets mes sauvegardes -
Dernière
Version
Qui
Marche).
C'est bien pratique pour les programmeurs, si une fonction change d'arguments
ou de type, adieu les mauvaises surprises.
Aussi,
txtrpl e:\info\*.* B800h /exec"copy %1 d:\tmp"
rassemblera dans le répertoire
d:\tmp tous les fichiers
contenant "B800h" sous e:\info.
De même,
txtrpl *.txt "\13\10\13\10" "\13\10" /r /p
(lancé plusieurs fois jusqu'à ce qu'il ne trouve plus rien)
"compresse" les successions de lignes vides, par exemples dans les
fichiers HTML pas toujours très bien fichus qu'on trouve sur le Web.
Si un fichier a des fins de lignes à la Unix et est illisible dans
le Notepad, convertissez-le avec mon
UNIX2DOS.
Options de lancement de la version DOS/Console
Pour la version console, les options sont à la
ligne de commande, tapez
txtrpl ?
pour voir la syntaxe. Ça donne :
txtrpl 4.5 - Chercher/remplacer - Search & Replace.
Usage:txtrpl <fichier> <texte à trouver> {<texte de remplacement>} {<options>}.
Si pas de texte de remplacement, cherche seulement, ne remplace pas.
Pour des caractères non imprimables, donnez le code ASCII : "\13\10".
Pour mettre un guillemet : \" ou \34. (<=\60, >=\62, %=\37)
Si '/' ou '-' en 1ère position, le doubler.
* et ? permis dans <fichier>.
Fait les sous-répertoires si /S.
N'OUBLIEZ PAS de donner l'option /r sinon rien n'est remplacé !
Options de txtrpl: [valeurs actuelles]
Actions à réaliser ------------------------------------------------------------
Exec: <Exéc>uter la commande (avec %1 à la place du nom de fichier) [NON,""]
R: Remplacement <R>éel (sinon fichiers pas modifiés) [NON]
SL: <S>upprimer les <L>ignes contenant le texte recherché [NON]
NSL: <S>upprimer les <L>ignes <N>E contenant PAS le texte recherché [NON]
Touch: Change la date du fichier (comme "Touch" d'Unix) [NON]
Critères de recherche ---------------------------------------------------------
M: <M>in/Maj: 0=ignorer 1:Remplacer si idem 2:Rempl. si diff. 3:Imiter [0]
DL: Remplacer seulement les occurrences en <D>ébut de <L>igne [NON]
FL: Remplacer seulement les occurrences en <F>in de <L>igne [NON]
Fuz: Recherche approximative ("Floue") [NON]
W: Remplacer seulement mots entiers ("<W>hole words") [NON]
Dst: Nom du fichier de destination (sinon écrase) [""]
IB: <I>gnorer les fichiers <B>inaires (non-texte) [OUI]
Affichage des résultats -------------------------------------------------------
Aff: Largeur d'<Aff>ichage (option /v2) [80]
H: <H>auteur d'Affichage (option /v3) [4]
AO: <A>fficher les <O>ptions au début [NON]
P: <P>ause à la fin de chaque écran [OUI]
PD: <P>ause au <D>ébut de l'exécution [NON]
PF: <P>ause à la <F>in de l'exécution [NON]
C: <C>onfirmer les remplacements (O,N, <Esc>=finir, <Tab>=fich. suivant)[NON]
V: Ba<V>ard: détaille les fichiers vus et les résultats :
0 : n'affiche rien 1 : Indique les fichiers où occurrences
2 : Indique tous les fichiers et une ligne par occurrence (v. /Aff)
3 : Indique le voisinage de chaque occurrence (+- /H lignes) [2]
SB: <S>ignaler les fichiers <B>inaires (non-texte) [OUI]
Log: Sauvegarder les résultats (+ nom fichier, sinon TxtRpl.LOG) [NON,""]
Options du balayage de fichiers : ---------------------------------------------
DD: Rechercher sur tous les <D>isques <D>urs [NON]
S: Rechercher aussi dans les <S>ous-répertoires [NON]
XD: E<X>clude <D>irectory (+nom ; pratique pour ignorer OLD ou BACKUP) [""]
NB: <N>om<B>re maximum d'occurrences (0 = pas de limite) [0]
Pour télécharger cet utilitaire, version Windows 95:
cliquez ici.
Taille: 250 kO.
Version console (Vieux DOS, Console Windoze, émulateurs), plus pratique pour les gros boulots et les remplacements multiples :
cliquez ici.Taille : 85 kO.
Améliorations futures
J'ai mis dans cet utilitaire toutes les fonctionnalités que je
pouvais imaginer, mais également
signalez-moi
ce que j'ai bien pu oublier.
C'est le seul paiement que je vous demande : critiquez
constructivement ces outils, dites-moi comment vous vous en servez,
faites des suggestions, etc.
Au programme des améliorations futures :
Une présentation plus sympathique des résultats
(icônes, possibilité de double-cliquer pour voir les fichiers, etc.)
Les expressions régulières - mais comme je ne suis pas
du style à réinventer le pneu crevé, ça attendra que j'aie trouvé
du source pour faire ça sur le 'Net.
Traitement indifféremment des fichiers OEM, ANSI ou HTML, et
remplacements "à l'identique" dans le format approprié.