Tengo que reemplazar palabras en archivos/carpetas con una longitud de palabras de reemplazo (234,206 palabras).
Notepad ++ no permite el recuento de palabras de reemplazo de más de 2,047 palabras. TextCrawler 3 no permite el recuento de palabras de reemplazo de más de 29 999 palabras.
Solo reemplazo simple. No se necesita expresión regular especial.
Se necesita la opción Archivos/Subcarpetas en Carpeta.
Debería poder hacer esto con un simple script de python , algo como:
import os
# Assuming that the replacement words are in a plain text file with
# colon separating the original & new words and one pair per line.
SEP = ":"
REPLACE_SOURCE = "/full/path/to/replacement/list.txt"
START_DIR = "."
with open(REPLACE_SOURCE) as infile:
replacement_pairs = [line.strip().split(SEP) for line in infile]
for (root, dirs, files) in os.walk(START_DIR):
print("Working in", root)
for fname in files:
fullpath = os.path.abspath(os.path.join(root, fname)
if fname.lower.endswith('.txt') and fullpaht != REPLACE_SOURCE:
print("\tProcessing", fname)
intext = open(fullpath).read()
for orig, repl in replacement_pairs:
intext = intext.replace(orig, repl)
# You may wish to consider renaming the original file here!
with open(fullpath, 'wt') as outfile:
outile.write(intext)
Advertencia, lo anterior reemplazará el contenido de todos los archivos .txt en el directorio actual.
Esto debería funcionar bien, a menos que algunos de los archivos sean demasiado grandes para que el contenido quepa en la memoria disponible.
Python es gratuito, multiplataforma y de código abierto.
Así que tiene este enorme documento de texto sin formato y va a buscar/reemplazar algo que tiene cientos de miles de ocurrencias.
Salga del Bloc de notas y simplemente ejecútelo sed
. https://www.gnu.org/software/sed/manual/sed.txt
Construido con OS X y Linux, hay puertos/compilaciones win32, debería estar en la cosa de linux-inside-windows, etc.
Ángel Montes de Oca