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

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

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

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

Чи існує якесь програмне забезпечення, яке може це зробити?

5
Ви ніколи не зможете замінити всі слова у всіх файлах одночасно на один файл за один раз, можливо, дуже швидко. Це пов'язано з вузькими місцями читання файлів з диска тощо.
додано Автор Lehane, джерело
Тому ab замінюється на Привіт , та abc замінюється на Привіт тощо?
додано Автор Geoffrey Jones, джерело

6 Відповіді

Ви можете зробити це за допомогою програми Notepad ++ без відкриття файлів:

  • Open Notepad++
  • Press Ctrl + H
  • Switch to the tab titled "Find in Files"
  • Specify your search text, and the replacement
  • Set the folder in which your files are
  • Depending on your needs, you might specify some filters on your files (ex: *.txt, *.html), you might check "in all subfolders", set the "search mode" etc.
  • Click "Replace in Files"

Будьте впевнені, перш ніж приступити до останнього кроку, тому що це незворотно. Ви можете спочатку натиснути "Знайти все", щоб перевірити матчі.

Це може зайняти деякий час, залежно від розміру та кількості ваших файлів.

Replace in files using Regexp

6
додано
Вибачте за пізню відповідь, але, будь ласка, прочитайте моє запитання ще раз. Я знаю, як це робити з notepad ++, але я можу замінити тільки один текст за один раз. Наприклад, якщо я хочу замінити 100 різних слів, я повинен зробити цю заміну 100 разів. Що я попросив не що. Я хочу зробити цю заміну 100 слів одним клацанням миші
додано Автор nitsua60, джерело
Гаразд, я оновив скріншот, щоб відповідати наведеному вами прикладу. Ви все ще можете зробити це за допомогою функції заміни файлів у notepad ++, але ви повинні встановити режим пошуку на "Регулярний вираз", і ви повинні відформатувати шаблон регулярного виразу, відповідний всім рядкам , які ви хочете замінити . Отже, у вашому прикладі потрібно замінити ab, abc, abcd, ... на "Hello", тоді ваш шаблон буде "^ (. *) Ab [az] + (. *) $" (Виключити котирування surronding) і заміна буде Hello 2 (1 замінює перший рядок, оточений (), 2 другим і так далі).
додано Автор cod, джерело

Видається CudaText редактором. Це безкоштовно, Windows/Linux. Необхідний плагін: "Знайти у файлах" (він знаходиться в AddonManager у CudaText).

У діалоговому вікні "Знайти у файлах" введіть рядок для пошуку: (ab | def | fgfg) - це регулярний вираз, тому встановіть прапорець "Reg ex" (це значок . * у діалоговому вікні).

1
додано
Завдяки RP. я спробую
додано Автор nitsua60, джерело

You can use the Microsoft windows ports of GNU awk or sed, which are both CLI and open source. One commonly used port: http://gnuwin32.sourceforge.net/packages.html

1
додано
Завдяки Franck за коментар. Спробую це зробити
додано Автор nitsua60, джерело

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

У вашій ситуації він буде прокручувати кожен набір критеріїв пошуку та заміни, які ви вкажете. Я б, напевно, починав з abcdefg, abcdef, abcde і т.д., як казали інші, створивши резервну копію папки, якщо ваша робота має небажані результати.

Раніше я використовував цей інструмент для:

  • змінити рік авторського права на веб-сайти
  • змінювати шістнадцяткові значення для відповідного каналу повернення каретки у вікнах
  • шукати символи, які не є ascii у файлах
1
додано
Дуже дякую. буде намагатися. вибачте за пізню відповідь
додано Автор nitsua60, джерело

RProgram is rigth.

I'am автор плагіна FindInFile (FiF) для редактора CudaText.

  1. FiF дійсно може робити те, що ви хочете.

  2. FiF заповнює файл звіту, щоб показати всі знайдені фрагменти та всі заміни. Приклад звіту. "(! N)" позначає лінію знайденим фрагментом, "(= N)" позначає лінію з заміною.

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

FiF-плагін стабільний. Див. Github.com/kvichans/cuda_find_in_files, щоб отримати більше інформації та запитати.

1
додано
Завдяки квічанам. Спробуємо це.
додано Автор nitsua60, джерело

Залежно від розміру файлів і характеристик комп'ютера, це має бути можливим у Notepad ++.

  1. Відкрити всі файли за допомогою програми Notepad ++ (або лише 200 або щось інше, залежно від вашого комп'ютера)
  2. CTRL + H
  3. Встановіть, що до ab | abc | abcd | abcdef | abcdefg (що б ви не намагалися замінити, окремо з |. це основний регулярний вираз, я рекомендую переглянути це)
  4. Встановіть замінити на на що хочете (у прикладі Hello)
  5. Встановіть режим пошуку на "регулярний вираз"
  6. Натисніть замінити все у всіх відкритих документах
0
додано
ВП спеціально сказав, що він не хотів, щоб відкрити всі файли, щоб зробити це - є 1000 з них
додано Автор Robert Elwell, джерело
Я не хочу відкривати файли. Але якщо ця робота у відкритих файлах, я думаю, що вона повинна працювати в штрафу в файлах теж. чи не так? буде намагатися. Дякуємо за ваш коментар.
додано Автор nitsua60, джерело