Программное обеспечение для замены нескольких текстовых строк в нескольких файлах

Я ищу программное обеспечение для Windows, которое может одновременно заменять несколько текстовых строк в нескольких файлах.

У меня есть несколько слов, которые я хочу заменить в тысячах текстовых файлов. Например, я хочу заменить ab, abc, abcd, abcde, abcdef, abcdefg, abcdefgh.

Я не хочу делать это слово за словом (например, с помощью опции Notepad++ Заменять в файлах при каждой замене) - я хочу заменить все эти слова одновременно. Я хочу заменить его обычным словом; скажем «Здравствуйте».

Есть ли какое-нибудь программное обеспечение, которое может это сделать?

Вы никогда не сможете заменить все слова во всех файлах одновременно, только по одному файлу за раз, возможно, очень быстро. Это связано с узкими местами чтения файлов с диска и т.п.
Итак, ab заменяется на Hello , а abc заменяется на Hello и т. д.?

Ответы (9)

Вы можете сделать это с помощью Notepad++, не открывая файлы:

  • Откройте Блокнот++
  • НажиматьCtrl + H
  • Перейдите на вкладку «Найти в файлах».
  • Укажите текст поиска и замену
  • Укажите папку, в которой находятся ваши файлы
  • В зависимости от ваших потребностей вы можете указать некоторые фильтры для ваших файлов (например: *.txt, *.html), вы можете проверить «во всех подпапках», установить «режим поиска» и т. д.
  • Нажмите «Заменить в файлах».

Будьте уверены, прежде чем перейти к последнему шагу, потому что это необратимо. Вы можете сначала нажать «Найти все», чтобы проверить совпадения.

Это может занять некоторое время в зависимости от размера и количества ваших файлов.

Заменить в файлах с помощью Regexp

Извините за поздний ответ, но, пожалуйста, прочитайте мой вопрос еще раз. Я знаю, как это сделать с помощью notepad++, но я могу заменить только один текст за раз. Например, если я хочу заменить 100 разных слов, я должен сделать эту замену 100 раз. Я не то спросил. Я хочу сделать эту замену 100 слов в один клик
Хорошо, я обновил скриншот, чтобы он соответствовал приведенному вами примеру. Вы по-прежнему можете сделать это с помощью функции замены в файлах в блокноте ++, но вам нужно установить режим поиска «Регулярное выражение» и отформатировать шаблон регулярного выражения, соответствующий всем строкам, которые вы хотите заменить. Итак, в вашем примере вы хотите заменить ab, abc, abcd,... на "Hello", тогда ваш шаблон будет "^(.*)ab[az]+(.*)$" (исключить окружающие кавычки) и замена будет \1Hello\2 (\1 заменяет первую строку, окруженную () , \2 \ вторую и так далее).

Вы можете использовать порты GNU awk или sed для Microsoft Windows, которые являются как интерфейсом командной строки, так и открытым исходным кодом. Один из часто используемых портов: http://gnuwin32.sourceforge.net/packages.html .

Спасибо Франк за комментарий. попробую и это

Я использовал бесплатный gsar для последовательного поиска или поиска/замены нескольких файлов.

В вашей ситуации он будет прокручиваться по каждому набору критериев поиска и замены, который вы укажете. Я бы, вероятно, начал с abcdefg, abcdef, abcde и т. Д., Как говорили другие, сделайте резервную копию вашей папки на случай, если ваша работа приведет к нежелательным результатам.

Я использовал этот инструмент в прошлом, чтобы:

  • изменить год авторского права на веб-сайтах
  • изменить шестнадцатеричные значения для правильного перевода строки возврата каретки в окнах
  • искать не-ascii-символы в файлах

RProgram прав.

Я автор плагина FindInFile (FiF) для редактора CudaText.

  1. FiF действительно может делать то, что вы хотите.ФиФ

  2. FiF заполняет файл-отчет, чтобы показать все найденные фрагменты и все замены. Пример отчета. "(!N)" отмечает строку с найденным фрагментом, "(=N)" отмечает строку с заменой.введите описание изображения здесь

  3. В CudaText файл отчета жив . Вы можете перейти к точке замены в исходном файле.

FiF-плагин работает стабильно. См. github.com/kvichans/cuda_find_in_files, чтобы получить дополнительную информацию и задать вопрос.

Кажется, редактор CudaText может это сделать. Это бесплатно, Windows/Linux. Необходим плагин: "Найти в файлах" (он находится в AddonManager в CudaText).

В диалоговом окне "Найти в файлах" введите такую ​​строку для поиска: (ab|def|fgfg)- это регулярное выражение, поэтому установите флажок "Регистральное выражение" (это значок .*в диалоговом окне).

Попробуйте Text Replacer , вот несколько скриншотов:

Заменитель текста

Заменитель текста

Заменитель текста

Заменитель текста

В зависимости от размера файлов и характеристик вашего ПК это должно быть возможно с помощью Notepad++.

  1. Откройте все файлы с помощью Notepad++ (или только 200 или около того, в зависимости от вашего ПК)
  2. CTRL + Н
  3. Установить find что для ab|abc|abcd|abcde|abcdef|abcdefg (независимо от того, что вы пытаетесь заменить, разделите его |. это базовое регулярное выражение, я рекомендую поискать его)
  4. Установите замену на все, что вы хотите (в вашем примере Hello)
  5. Установите режим поиска на «Регулярное выражение».
  6. Нажмите заменить все во всех открытых документах
ОП специально сказал, что ему не нужно открывать все файлы для этого - их тысячи.
Я не хочу открывать файлы. Но если это работает в открытых файлах, я думаю, что это должно работать нормально и в файлах. не так ли? попытаюсь. Спасибо за ваш комментарий.

Вы можете использовать программу расширенного поиска и замены по адресу http://www.abacre.com/afr/. В пакетной замене вы можете ввести столько слов или строк, сколько вам нужно, и она будет изменена во всех файлах в папке, не открывая файлы.

https://www.powergrep.com/list.html

Большинство инструментов grep могут искать только одно регулярное выражение. С PowerGREP вы можете использовать до пяти наборов условий поиска. Каждый набор может использовать неограниченное количество регулярных выражений.

Не бесплатно, но и не наше время