Массовый поиск и замена текстов / данных в файлах — Sublime Text, WinGrep
По работе частенько использую программу WinGrep для поиска текста в файлах — она здорово выручает, когда нужно определить где именно в шаблоне вызывается какая-то функция или CSS стиль. Современные темы состоят из десятков/сотен элементов, и вручную просматривать их все крайне не эффективно. Также иногда появляется необходимость найти и заменить текст сразу в нескольких файлах дабы одновременно внести правки в весь макет. Сегодня рассмотрю как это делается с помощью Sublime Text и WinGrep. Начнем с первого. Также в работе может пригодиться программа сравнения файлов и содержимого папок WinMerge.
Поиск и замена текста в Sublime Text
Соответствующий инструмент от Sublime Text находится в разделе меню Find — пункт «Find in Files» (или горячая клавиша — Ctrl + Shift + F). Сразу после этого внизу экрана появится специальная форма:
Здесь слева выбираете разные настройки, а справа вводите необходимые данные для поиска и замены значений, а именно:
- Find — что нужно найти (допускается обычный текст или регулярные выражения, если я правильно понял).
- Where — указываете где искать информацию (директория/путь, фильтры).
- Replace — строка для замены. В принципе, ее можно оставлять пустой и тогда вы просто найдете файлы, в которых встречается фрагмент из «Find».
Из настроек (иконки слева):
- Использование регулярных выражений (Alt + R).
- Учитывать регистр текста или нет (Alt + C).
- Полное совпадение слова при поиске (Alt + W).
- Демонстрация контекста для искомого фрагмента (немного кода до и после).
- Отображение результатов в отдельном окне, а не в обычных вкладках.
Напротив строки Where располагается кнопка с «…», при клике на которую вызывается меню с некоторыми функциями:
Можете выбрать директорию(и), где будет выполнятся поиск и замена слов (Add Folder), использовать фильтр включения или исключения файлов (Add Include Filter, Add Exclude Filter), добавить символические пути (<open folders>, <open files>). В принципе, данная кнопка с «…» — это просто опция интерфейса, софт допускает ввод запроса вручную, если знаете синтаксис. Например:
N:\web2me.ru\wp-content\themes\BlueGrey,*.php,-*.txt
Вместе с заданием нужной директории на диске я определил включение только php файлов, и исключение всех txt.
Вот как выглядит результат:
Таким образом, чтобы осуществить в данной программе поиск и замену вам надо:
- Выбрать в основном меню пункт «Find» — «Find in Files».
- В открывшейся форме задать значения трех строк: что именно найти (Find), где искать (Where) и чем заменить (Replace).
- Далее кликаете по кнопке «Replace» и подтверждаете свое решение.
- Через несколько секунд все завершится, и соответствующие файлы откроются в новых вкладках Sublime Text. Важный момент! — изменения внесены, но не сохранены. Это нужно будет сделать через меню «File» — «Save all».
Функция поиска и замены данных в WinGrep
Рассмотрю также альтернативный вариант, для тех кто уже работает с WinGrep. Преимуществом софта по сравнению с Sublime Text является то, что его можно запускать с помощью контекстного меню в Windows, вызываемого кликом правой кнопкой мыши. Реально быстро и удобно.
Для поиска и замены строки в файлах через WinGrep выбираете в меню пункт «Search» — «Replace» (горячая клавиша — Ctrl + R). Судя по всему, он доступен только когда вы предварительно осуществляли обычный поиск.
Сразу после этого появится всплывающее окно, где нужно будет ввести новую фразу для замены.
Если сейчас нажмете кнопку «Finish», то процедура выполнится с установленными по умолчанию параметрами. Если кликните «Next», то перейдете на следующий шаг, где сможете определить разные детали:
- найти и заменить текст в файле, который вы выбрали, либо во всех сразу;
- применить изменения к оригинальным документам или создать новые;
- выполнять все без каких-либо вопросов или предварительно спрашивать пользователя о том или ином решении.
Здесь при клике «Finish» фактически запускается замена, а кнопка «Next» откроет еще одно окно с текстовым поздравлением, что все шаги пройдены. После завершения работы WinGrep увидите соответствующие уведомления. Также автоматически создадутся резервные копии файлов, что весьма полезно.
Разумеется Sublime Text и WinGrep — не единственные программы, где можно выполнять массовый поиск и замену значений / фрагментов в директории. Уверен, что Notepad++ тоже позволяет так делать, но пока в этом не разбирался. Если знаете еще какой-то подходящий софт, подскажите в комментариях.
огонь!!
Спасибо, мне как начинающему вебмастеру интересно было узнать о такой функции.. да и Sublime Text выглядит получше блокнота++ — в чем его преимущества?
Вера, я раньше использовал Notepad++, но Sublime Text почему-то больше приглянулся. Какой-то принципиальной разницы между ними я не заметил, по крайней мере для моих задач. Многие функции дублируются.
Еще одна (очередная) причина переходить на Sublime Text:)