Регулярные выражения Total Commander

Обновлено: 30.06.2024

Я добавляю к каждому документу, сохраняемому на диск, год, месяц и день. Хотя я делаю это вручную для отдельных файлов, иногда я сталкиваюсь с большим количеством файлов с «неправильной» схемой именования. Вот как можно быстро переименовать множество файлов с помощью универсального Total Commander.

Переименование файлов с помощью регулярных выражений

Иногда у вас есть наборы файлов со всеми нужными компонентами в именах, но в неправильных местах. В одном случае год и месяц были в конце имени, а не в его начале. Кроме того, я хотел заменить символы подчеркивания пробелами (в конце концов, мы живем в 21 веке).

Исправить это на удивление просто с помощью инструмента Total Commander для многократного переименования. Я определил регулярное выражение с двумя группами (разделы в круглых скобках), чтобы зафиксировать год и месяц соответственно. Содержимое групп захвата помещается в переменные $1 и $2, которые я затем использовал для создания новых имен.

Поясню подробнее. Это формат существующих файлов:

Желаемый целевой формат:

Найдите следующее регулярное выражение, совпадающее с именами исходных файлов и зафиксировавшее месяц и год:

Заменить новыми именами файлов, используя групповые переменные захвата регулярных выражений:

Использование инструмента многократного переименования Total Commander

В Total Commander выберите файлы, которые вы хотите переименовать, затем нажмите CTRL+M, чтобы открыть инструмент многократного переименования. Заполните поля поиска и замены. Как вы можете видеть ниже, Total Commander предоставляет предварительный просмотр изменений. Как только вы будете удовлетворены предварительным просмотром, нажмите «Старт!» выполнить переименование.


Примечание: если вы находитесь на экране с высоким разрешением, вы заметите, что строка с флажком «RegEx» на снимке экрана видна лишь частично. Похоже, это редкая ошибка масштабирования DPI в Total Commander. Это определенно исключение: Total Commander полностью поддерживает высокое разрешение.

Об авторе

Хельге Кляйн (бывшая CTP, MVP и vExpert) работала консультантом и разработчиком, прежде чем основала компанию uberAgent. Хельге применил свои обширные знания в проектах по ИТ-инфраструктуре и разработал продукт для управления профилями пользователей, преемник которого теперь доступен как Citrix Profile Management. Хельге является автором популярных инструментов Delprof2 и SetACL. Он выступал на Citrix Synergy, BriForum, E2EVC, Splunk.conf и многих других мероприятиях. Хельге очень активна в ИТ-сообществе и является соучредителем сообщества виртуализации NRW (VCNRW).

Где разместить регулярное выражение для поиска файлов? + как правильно размещать вопросы

Где разместить регулярное выражение для поиска файлов? + как правильно размещать вопросы

Где я должен разместить регулярное выражение?

Power Member
< /p>

Horst.Epp Power Member
Сообщений: 4755 Присоединился: 06 февраля 2003 г., 17:36 UTC Местоположение: Германия

Windows 11 Домашняя x64 версии 21H2 (сборка ОС 22000.556)
TC 10.00 x64 / x86
Все 1.5.0.1305a (x64)

Power Member
< /p>

DrShark Power Member
Сообщений: 1869 Присоединился: 03.11.2006, 22:26 UTC Адрес: Киев, 68/262 Контакты:

Horst.Epp писал: ↑ 09.11.2019, 18:10 UTC Это работает, включив Everything и используя его синтаксис в поиске TC.

Я еще не использовал Everything, и у меня есть вопрос: значит, синтаксис TC и Everything RegEx отличается? Какой из них сильнее?

Пожертвуйте Украине, чтобы остановить российское вторжение!
Специальный банковский счет Национального банка Украины:
UA843000010000000047330992708

Power Member
< /p>

Horst.Epp Power Member
Сообщений: 4755 Присоединился: 06 февраля 2003 г., 17:36 UTC Местоположение: Германия

Horst.Epp писал: ↑ 09.11.2019, 18:10 UTC Это работает, включив Everything и используя его синтаксис в поиске TC.

Я еще не использовал Everything, и у меня есть вопрос: значит, синтаксис TC и Everything RegEx отличается? Какой из них сильнее?

Windows 11 Домашняя x64 версии 21H2 (сборка ОС 22000.556)
TC 10.00 x64 / x86
Все 1.5.0.1305a (x64)

Power Member
< /p>

Stefan2 Power Member
Сообщений: 3457 Присоединился: 13 сентября 2007 г., 22:20 UTC Местоположение: Европа

marceepoonu написал: ↑ 2019-11-09, 17:33 UTC, когда я попытался запустить это регулярное выражение
в окне поиска Total Commander, я получил сообщение об ошибке,

Откройте поиск и нажмите клавишу F1.
Прокрутите вниз до "RegEx Поиск в именах файлов с использованием регулярных выражений".
Нажмите "регулярные выражения" и прочитайте, какой синтаксис использует и поддерживает TC.

Введите регулярное выражение в поле "Искать:" и установите флажок [x]RegEx.

Power Member
< /p>

tuska Power Member
Сообщений: 2678 Присоединился: 21 мая 2007 г., 12:17 UTC

Everything использует механизм регулярных выражений, совместимых с Perl (PCRE).
['Все': Меню "Помощь" - "Обо всем CTRL+F1" - "Лицензия"]

Power Member
< /p>

Ovg Power Member
Сообщений: 728 Присоединился: 06 января 2014 г., 16:26 UTC Местоположение: MOW

2DrShark

Механизм регулярных выражений TC не поддерживает просмотр вперед и назад

Power Member
< /p>

petermad Power Member
Сообщений: 11043 Присоединился: 05 февраля 2003 г., 20:24 UTC Местоположение: Valsted, Дания Контактное лицо:

Модификаторы используются для изменения поведения регулярных выражений.

(?i) Игнорировать верхний/нижний регистр. В Total Commander это имя файла по умолчанию.
(?-i) Сопоставление с учетом регистра.
(?g) Включает "жадный" режим (активен по умолчанию)
(?-g) Выключает "жадный" режим, поэтому "+" означает то же, что и "+?"

Я думаю, что: (?=\.vbs) считается модификатором TC, но разрешены только указанные выше модификаторы.

Power Member
< /p>

Ovg Power Member
Сообщений: 728 Присоединился: 06 января 2014 г., 16:26 UTC Местоположение: MOW

marceepoonu написал: ↑ 2019-11-09, 17:33 UTC, когда я попытался запустить это регулярное выражение
в окне поиска Total Commander, я получил сообщение об ошибке,

Введите регулярное выражение в поле "Искать:" и установите флажок [x]RegEx.

Затем я сформулировал этот поиск по регулярному выражению в RegexBuddy, используя регулярные выражения разновидности PCRE 8.39 UTF-32.
Это изображение Изображение: https://drive.google.com/file/d/17bchFMFGR958oClgbB3jsW8vTuu0Elbd/view?usp=sharing показывает, что регулярное выражение соответствует выделенным файлам, расположенным в каталоге «E:\Apps\UtilitiesByMarc». , согласно RegexBuddy.

Наконец, я выбрал вкладку «Общие» в TC, а затем нажал кнопку «Начать поиск».
Но как на этом изображении. Изображение: https://drive.google.com/file/d/17bchFMFGR958oClgbB3jsW8vTuu0Elbd/view ?usp=sharing отражает, окно TC "Результаты поиска" показывает "[Файлы не найдены]"

Поэтому я больше не получаю сообщение об ошибке, но теперь мой вопрос заключается в том, что мне нужно сделать по-другому, чтобы я мог искать файлы в этом каталоге (E:\Apps\UtilitiesByMarc), используя регулярное выражение ниже , который является приемлемым поиском в разновидности регулярных выражений PCRE 8.39 UTF-32?
((.+?)?(?=\.vbs)) ) ( .vbs) $

Power Member
< /p>

Ovg Power Member
Сообщений: 728 Присоединился: 06 января 2014 г., 16:26 UTC Местоположение: MOW

Регулярные выражения — очень мощный инструмент поиска. Они позволяют искать сложные классы слов. Регулярные выражения в основном предназначены для профессионалов, но также могут быть полезны в офисе для поиска определенных документов (см. примеры ниже).

Total Commander поддерживает регулярные выражения в следующих функциях: - Команды - Поиск (по имени файла и содержимому файла) - В Lister - В инструменте Multi-Rename - В диалоговом окне выбора

Регулярные выражения состоят из обычных символов и специальных символов, так называемых метасимволов. Следующие символы являются метасимволами или начальными частями метасимволов:

Обычные символы:

test находит строку "test" в искомом тексте. Примечание. Это находит «тест» ВСЕГДА в имени файла или в строке текста.

Escape-последовательности:

Обратная косая черта \ запускает Escape-последовательность. Примеры управляющих последовательностей:

\ t Вкладка
\ xnn Символ с шестнадцатеричным кодом nn. Пример: \x20 — пробел. Таблица символов charmap.exe (если установлена) показывает код большинства специальных символов. Вы можете использовать калькулятор Windows в инженерном режиме для преобразования десятичных чисел в шестнадцатеричные.
\ [ Левая квадратная скобка. Поскольку квадратные скобки являются метасимволами, их нужно записывать как \[ для поиска в целевой строке.
\\ Находит обратную косую черту.
\. Находит точку ("." находит любой символ, см. ниже).

Классы персонажей

Символы в квадратных скобках образуют класс символов. Он найдет ровно один символ из этого класса. Дефис позволяет определить группы, например. [а-я]. ^ в начале находит все символы, кроме перечисленных.

[aeiou] Находит ровно одну из перечисленных гласных.
[^aeiou] Находит все, кроме гласной.
M[ae][iy]er < /td> Находит мистера Мейера всеми возможными способами написания: Майер, Мейер, Майер, Мейер. Очень полезно, если вы не можете вспомнить точное написание имени.

Метасимволы

Вот список наиболее важных метасимволов:

Итераторы

Итераторы используются для повторения символа или выражения слева от итератора.

^ Начало строки
$ Конец строки
. Любой символ
\w буква, цифра или подчеркивание _
\W противоположное \w
\d цифра
\D без цифры
\s разделитель слов (пробел, табуляция и т. д.)< /td>
\S без разделителя слов
\b находит граница слова (сочетание \s и \S)
\B противоположное \b
* ноль или более вхождений
+ один или более вхождений
ровно n вхождений
минимум n вхождений
минимум n и макс. m случаев

Все эти операторы являются "жадными", что означает, что они берут столько символов, сколько могут получить. Ставить вопросительный знак? после того, как оператор делает его «нежадным», т. е. он принимает столько символов, сколько необходимо. Пример: "b+" применяется к целевой строке "abbbbc" находит "bbbb", "b+?" находит только "b".

Альтернативы

Варианты заключены в круглые скобки и разделены вертикальным тире.

(John|James|Peter) находит одно из имен John, James или Peter.

Подвыражения для поиска+замены

Части текста в круглых скобках воспринимаются как подвыражения.

Чтобы поменять местами название и интерпретацию в имени файла mp3 файла, когда они разделены дефисом (Название - Interpret.mp3), это можно решить следующим образом:

Искать: (.*) - (.*)\.mp3

Заменить на: $2 - $1.mp3

Здесь $1 означает текст в первой скобке, а $2 – текст во второй скобке.

Обратные ссылки

Модификаторы

Модификаторы используются для изменения поведения регулярных выражений.

\n Находит подвыражение n в другой раз в результатах поиска.
(?i) Игнорировать верхний/нижний регистр. В Total Commander это значение по умолчанию для имен файлов.
(?-i) Сопоставление с учетом регистра.
(?g) Включает «жадный» режим (активен по умолчанию)
(?-g) Отключает «жадный» режим, поэтому «+» означает то же, что и «+?»

Остальные модификаторы не имеют значения для Total Commander, так как программа поддерживает поиск только в пределах одной строки.

Использование регулярных выражений

Использование регулярных выражений (RegEx) не так просто, если вы не знакомы с ним. Итак, вот еще немного информации:

Одна из самых загадочных вещей, связанных с RegEx, заключается в том, что Asterisk * , вопросительный знак ? и точка. не имеют того значения, которое вы знаете.

Поскольку вы установили переключатель «RegEx», * не означает «любая текстовая строка любой длины», но это счетчик, который означает, что «предыдущее выражение должно быть там ноль, один или несколько раз». Поэтому, если вы хотите выразить «общепринятое» значение звездочки, вам придется использовать:

где точка является заполнителем для любого символа, а звездочка означает ноль, одно или несколько вхождений «любого символа».

Если вы хотите увидеть, как TC обрабатывает эти термины, рекомендуется открыть инструмент многократного переименования, выбрав несколько файлов, установить флажок «RegEx» и попробовать примеры здесь. Инструмент Multi-Rename позволяет предварительно просмотреть, что произойдет, если вы начнете переименование с текущими настройками.

Поэтому, если вы оставите имя файла: [N] и расширение [E], то

MRT2.jpg

удалит все имя и расширение.

удалит все имя, включая точку, и оставит расширение в качестве имени.

MRT3.jpg

В этом случае файл . означает не «любой символ», а обычную точку из-за предшествующего символа \ .


Хорошо, давайте рассмотрим несколько реальных вопросов с форума:

Пример 1

заменить на:$2 $1 - $3

Использование круглых скобок побуждает TC воспринимать термин как подвыражение, чтобы вы могли ссылаться на него.

Таким образом, вы ищете текстовую строку любой длины, за которой следует двоеточие и пробел: (.*),

затем следует еще одна строка любой длины, за которой следует пробел минус пробел:(.*) -

за которым следует третья текстовая строка любой длины:(.*)

и замените второй строкой, за которой следует пробел: $2

затем первая, за которой следует пробел минус пробел: $1 -

а затем последний: $3

который также содержит расширение, поскольку точка между именем и расширением также является одним из «любых символов».

При желании вы можете поместить последовательность "пробел минус пробел" в одно из подвыражений:

Подключаемый модуль содержимого RegEx с поддержкой Unicode, основанный на библиотеке Perl Compatible Regular Expressions (PCRE).
Этот подключаемый модуль может заменить механизм регулярных выражений TC для содержимого файлов.
Начиная с версии 2.5 вы также можете использовать его для поиска в именах файлов.
Нет необходимости предоставлять регулярные выражения, просто используйте общую строку поиска для содержимого файла и избегайте необходимых синтаксических символов или заключайте в кавычки весь термин (\Q. \E), и вы можете, например, подсчитывать вхождения строк и, следовательно, фильтровать и сужать поиск с помощью пользовательского количества строк, которые должны содержать ваши файлы, чтобы соответствовать поиску в Total Commander.
Кроме того, вы можете создавать случайные строки и возвращать обнаруженную кодировку файлов (проверка файлов Unicode) и использовать плагин для сравнения файлов в функции синхронизации каталогов TC.

Поддерживается текстовый фильтр, который будет фильтровать определенные форматы файлов, например. для файлов .PDF и .DOC, чтобы расширить необработанный поиск файлов до большинства файлов документов/офисов.
Начиная с версии 2.5 есть поддержка фильтров Oracle Outside In Technology Content Access. После установки и работы эти фильтры обеспечат дополнительный мощный полнотекстовый поиск с поддержкой Unicode для TC 9.0 и выше (помимо возможности текстового фильтра для нормальной работы подключаемого модуля).

Вся конфигурация выполняется с помощью INI-файла, в котором вы можете создавать поля, которые могут вам понадобиться для повторного поиска или только для общего поиска (удалить и повторно загрузить подключаемый модуль).
Предоставляется утилита настройки ("PCREsearchConfig"), которая очень помогает вам настроить ваши поля, а также имеет возможность проверять выражения с помощью тестовой строки, а также обеспечивает мгновенную обратную связь в случае ошибочных выражений.< /p>

Возможности
- Использование полного набора функций для выражений Perl/PCRE при поиске содержимого файла в TC, например. режим Dotall/Singleline, утверждения Look-around, свойства персонажа, вкл. полные сценарии и свойства Unicode.
 — До 999 полей, настраиваемых в INI-файле подключаемого модуля. )
- Подсчет вхождений отдельных строк
- Сравнение файлов в функции синхронизации каталогов TC, а также для файлов с другой кодировкой
- Поиск в большинстве файлов Unicode, а не только в простом ANSI (автоматическое определение кодировки) < br />- Имена файлов Unicode и регулярные выражения Unicode
- Кэширование результатов в памяти - для извлечения полей в момент, когда они уже были получены в прошлом
- Настраиваемые ограничения памяти для предотвращения медленного чтения файлов и зависания TC
– Пользовательские схемы замены при возврате строк (ссылка на подгруппы)
– Создание случайных строк с помощью RegEx
– Поддержка текстового фильтра (xdoc2txt и Oracle OiT), который позволяет выполнять поиск в недоступных в противном случае текстовые части в большинстве офисных/pdf/текстовых документов < br />- Полнотекстовый поиск с поддержкой Unicode для TC 9.0 и выше при использовании фильтров OiT
- Вывод номеров строк и файловых смещений для результатов поиска
- Подсчет средней длины строки/результата в файле
>- сортировать поля в алфавитном порядке, прежде чем сообщать о них в TC
- Поставляется с утилитой настройки, которая включает: проверку RegEx путем ввода тестовой строки, проверку ошибок RegEx на лету,
встроенный RegEx и замена резюме синтаксиса строки, выбор шрифта

Примеры использования:
– Подсчет номеров строк в любом файле.
– Подсчет вхождений любой строки, символа или байта в файле.
– Подсчет отдельных строк/совпадений, например.для пропуска одинаковых строк или слов
- показать номер строки или смещение файла, в котором находится ваш поисковый запрос
- показать среднюю длину строки/результата вашего поискового запроса
- вернуть 1-й , 2-я или n-я строка файла в TC для отображения или поиска
- Фильтрация и отображение заголовков файлов по магическим числам / подписи, для проверки файлов с ошибочными расширениями или встроенных файлов
- Сравнение файлов с разными строками окончания и/или изменяющиеся пробелы (включая пустые строки), или исходные файлы с разными стилями отступа и т. д.
 – Проверка файлов на кодировку Unicode.
 – Возврат случайных строк с произвольным диапазоном символов, например рандомизация имен файлов в MRT или быстрое случайное заполнение полей из разных подключаемых модулей в TC
 – поиск только по именам файлов и возврат созданной пользователем строки результата для быстрого предварительного просмотра очищенных имен файлов в настраиваемых столбцах TC

Категория: Плагины контента
Статус: Бесплатная
Автор: milo1012
Добавлено: 16.01.2015
Обновлено: 4.07.2016
Скачано: 8159 раз
>Обсудить на форуме ТС

Читайте также: