Мне нужно заменить слова в файлах/папках на длину замены слов (234 206 слов).
Notepad++ не позволяет заменять подсчет слов более чем на 2047 слов. TextCrawler 3 не допускает замены слов более чем на 29 999 слов.
Просто простая замена. Специальное регулярное выражение не требуется.
Необходима опция «Файлы/подпапки в папке».
Вы должны быть в состоянии сделать это с помощью простого скрипта Python , например:
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)
Предупреждение выше заменит содержимое всех файлов .txt в текущем каталоге.
Это должно хорошо справляться, если только некоторые файлы не слишком велики для содержимого, чтобы поместиться в доступную память.
Python бесплатный, кроссплатформенный и с открытым исходным кодом.
Итак, у вас есть этот массивный простой текстовый документ, и вы собираетесь искать/заменять что-то, что имеет сотни тысяч вхождений.
Выйдите из Блокнота и просто запустите sed
его. https://www.gnu.org/software/sed/manual/sed.txt
Встроенные в OS X и Linux, есть порты/сборки win32, они должны быть в linux-inside-windows и т. д.
Анхель Монтес де Ока