Are we awake?...
UPD.: для пущего повышения скорости добавлены строки для работы через хардлинки. Быстро и сердито, но в пределах одной NTFS. На прочих системах нужно использовать строки с "copy" (оставлено, но заремлено).

Имела место быть ситуация -- огромное количество различных лог файлов, каждый из которых весьма велик (от 100Мб и больше). Логи -- от разных приложений. В них нужно найти вхождения каких-либо строк и сгруппировать результат поиска так, чтобы потом можно было легко понять, что и где нашлось. При этом не желательно копировать файлы.

Раньше, когда фалов было мало и они были сравнительно малого размера, я просто создавал каталоги с именем той строки, которую я искал и копировал туда файлы. Но это хорошо для 10-50Мб... ворочать десятками гигов как-то не очень хотелось.

Т.е. если я нашел строку "A1B2C3A0" в 10 разных файлах в 3-х разных каталогах, то я бы хотел получить это одним списком и так, чтобы потом иметь возможность быстро прыгать по файлам.

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

Окончательно отчаявшись, я придумал следующее -- в FAR есть возможность описать формат архива в плагине MultiArc. Я написал два формата -- один для команды dir, другой для результата работы плагина "File List" с параметрами %S %mP

В первом случае (dir) есть ограничение на использование каталогов -- их использовать нельзя.
В случае же с File List есть небольшая особенность -- путь в файле сохраняется от корня, а не от текущего положения. Что, может быть даже, логичнее. Кроме того он отображает ещё и каталоги, как файлы с каким-то размером. Не знаю, как от этого избавиться... не отмечать каталоги если только.

Т.е. создается файл... например, при помощи "File List" по выделенным файлам с указанием параметров -- "filelist.abc", жмем на нем Enter и проваливаемся внутрь, как в архив.

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

Фактически, получилась система индексных файлов или символьных линков. Хотя, конечно, и не то, что в Unix'е, но всё же лучше, чем совсем ничего.
читать дальше

Пример использования.
1. Alt-F7 и поиск по маске файлов по каталогам нужной строки. Например, в моем случае "006e01a1cdbf8d3b"
2. Когда поиск закончен, вывод в виде панели.
3. Выделить все файлы (обычно жму "*" )
3. F11 -> File List
4. Имя файла = "006e01a1cdbf8d3b.abc"
5. Форматная строка = %S %mP

В результате получаем файлик 006e01a1cdbf8d3b.abc, в который потом можем войти по Enter'у.

Поскольку мне это нужно исключительно для просмотра содержимого файлов, то я использую вариант с хардлинками. При этом, если нажать F5 на каталоге (но не на файле), то каталог скопируется целиком.

@темы: Компьютеры, Творчество