Константин Ошмян писал(а):bgInner писал(а):Павел Гарбар писал(а):Вот мне, например, сходу не нравится часть выражения: ^\.
Это ж не линух и обратный косая имеет другое значение.
Павел, Линукс здесь не при чем.
В регулярных выражениях метасимвол '.' в обычном режиме означает "любой единичный символ", а '\.' означает просто точку. Для того, чтобы искать символ, совпадающий с метасимволом, его следует предварить обратной косой чертой.
А регулярные выражения - они везде регулярные: и под виндой, и под Линуксом
Кстати, сразу поправляю свой пример
FS1\LOG:\LOGS\^.+\.[0-9]{,3}$
В свете вышесказанного - не означает ли запись
LOGS\^ просьбу искать файлы, начинающиеся с символов
LOGS, после которых пятым символом идёт "шапочка"
^ (циркумфлекс)?
Согласен. Надо в фигурные скобки взять. Но по порядку.
Вроде разобрался. Итак:
Всё сие было задумано для автоматической архивации логов Novell Audit 2.0.2. Данное ПО в конкретной папке создает логи вида
LYYMMDD.NNN
где
L - просто латинская буква
L
YY, MM, DD - соответственно две цифры года, месяца и дня
NNN - порядковый номер файла лога после ротации логов, задается ф HEX-формате, т.е. 000,... 0A0, FFE.
для поиска всех файлов с расширениями типа NNN прописываем:
- Код: Выделить всё
FILE_OR_DIR = FS1\LOG:\test\{.[0-9a-fA-F]+$}
Однако, Novell audit создает в том же каталоге также и файл текущего лога, имя которого задается в настройках Novell audit и не совпадает с выше указанным форматом. У меня оно задано одним словом, без расширения, т.е. что-то типа
MAINLOGдля поиска такого файла можно прописать следующее:
- Код: Выделить всё
FILE_OR_DIR = FS1\LOG:\test\{^[0-9a-zA-Z_]+.$}
а теперь объединяем эти два фильтра:
- Код: Выделить всё
FILE_OR_DIR = FS1\LOG:\test\{(^[0-9a-zA-Z_]+.$)|(.[0-9a-fA-F]+$)}
и не забываем указать на всякий случай:
- Код: Выделить всё
EXCLUDEFILEMASK = (*.ZIP$)
Сегодня также набросал небольшенький bash-скрипт для переименования текущего файла лога (типа MAINLOG) в файл вида
LYYMMDD.NNN, т.е. сделал принудительную ротацию логов.
Обращаю внимание, что перед такой ротацией я останавливаю аудит (т.к. текущий файл лога блокируется им) и после нее опять запускаю.
После чего спокойно запускаю NWZIP.
Теперь добавлю по поводу синтаксиса. Скачал искодники NWZIP, просомтрел вскользь. Понял, почему выражения тима моего изначального не работают: у регулярных выражений есть несколько вариантов синтаксиса. Что-то типа EMACS, POSIX, UNIX и т.д. Так вот, насколько я понял, NWZIP скомпилирован с поддержкой EMACS - там урезанный синтаксис.