El software de búsqueda y reemplazo que acepta palabras de reemplazo cuenta con más de 234,206 caracteres

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.

Tal vez Swiss File Knife podría hacerlo

Respuestas (2)

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.

Gracias @Steve Baarnes. ¿Incluye *.txt en las subcarpetas?
La secuencia de comandos anterior realizaría el reemplazo en cada archivo *.txt en todos los subdirectorios debajo del directorio actual (aparte del archivo fuente de reemplazo, (si se encuentra en el directorio actual o en un directorio anidado).

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.

Leí la pregunta porque hay 234,206 pares de palabras que todos los originales deben reemplazarse, por lo que cualquier archivo puede tener solo una palabra cambiada o varios miles en cada uno de los archivos que hay en el directorio y subdirectorios: esto sería significa llamar a sed recursivamente un total de 234,206 veces, por lo que podría llevar un tiempo.