Search & Replace-Software, die ersetzte Wörter akzeptiert, zählt mehr als 234.206 Zeichen

Ich muss Wörter in Dateien/Ordnern mit einer Länge von 234.206 Wörtern ersetzen.

Notepad++ erlaubt nicht mehr als 2.047 Wörter zum Ersetzen von Wörtern. TextCrawler 3 erlaubt keine Wortersetzung von mehr als 29.999 Wörtern.

Nur einfacher Austausch. Keine spezielle Regex erforderlich.
Die Option Dateien/Unterordner im Ordner ist erforderlich.

Vielleicht könnte Swiss File Knife es tun

Antworten (2)

Sie sollten dies mit einem einfachen Python- Skript tun können, etwa so:

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)

Warnung: Der Inhalt aller .txt-Dateien im aktuellen Verzeichnis wird ersetzt.

Dies sollte gut zurechtkommen, es sei denn, einige der Dateien sind zu groß, als dass der Inhalt in den verfügbaren Speicher passen würde.

Python ist kostenlos, plattformübergreifend und Open Source.

Danke @Steve Baarnes. Enthält es *.txt in Unterordnern?
Das obige Skript würde eine Ersetzung für jede *.txt-Datei in allen Unterverzeichnissen unterhalb des aktuellen Verzeichnisses durchführen (mit Ausnahme der Ersetzungsquelldatei (falls sie sich zufällig im aktuellen Verzeichnis oder einem verschachtelten Verzeichnis befindet).

Sie haben also dieses riesige Klartextdokument und Sie werden etwas suchen/ersetzen, das Hunderttausende von Vorkommen hat.

Beenden Sie Notepad und führen sedSie es einfach aus. https://www.gnu.org/software/sed/manual/sed.txt

Eingebaut in OS X und Linux, es gibt Win32-Ports/Builds, sollte im Linux-in-Windows-Ding enthalten sein usw.

Ich habe die Frage gelesen, da es 234.206 Wortpaare gibt, bei denen alle Originale ersetzt werden müssen, sodass in jeder Datei möglicherweise nur ein Wort geändert wird oder mehrere Tausend in jeder der vielen Dateien, die sich im Verzeichnis und in den Unterverzeichnissen befinden - dies würde bedeutet, dass sed insgesamt 234.206 Mal rekursiv aufgerufen wird, daher kann dies eine Weile dauern.