x-code
Joined: 20 Mar 2012 Posts: 14
|
(Separately) Posted: Mon Mar 17, 2025 21:59 Post subject: Виртуальная папка-архив для поиска по регулярному выражению |
|
|
Добрый день
Интересует следующий плагин файловой системы. Есть ли такое вообще, а если нет то насколько реально написать и что посоветуете взять за основу.
Плагин ассоциируется с файлами с некоторым расширением (по аналогии с *.zip и т.д.)
Внутри файла данного типа (назову его для краткости и по аналогии файлом "архива") находится путь и маска поиска файлов; маска может быть как простой (звездочки) так и полноценным регулярным выражением (что безусловно лучше т.к. дает больше возможностей).
Открытие "архива" приводит к "входу" в виртуальную папку, содержащую все файлы, находящиеся по заданному пути, включая все
вложенные папки, и удовлетворяющие заданной маске. Т.е. запускается поиск и результаты поиска попадают в виртуальную папку.
например такой файл ищет по пути d:/data1/data2 и вложенным папкам все файлы, содержащие в имени решетку и три цифры непосредственно за ней:
Code: |
path=d:/data1/data2
mask=#\d{3}
|
возможен и более сложный язык запросов, например учитывающий время, размер, наличие и содержимое ADS и т.д.
возможно несколько таких масок - тогда в виртуальную папку попадает всё, что удовлетворяет хотя-бы одной.
возможно и прямое перечисление точных путей к конкретным файлам и папкам - без поиска.
В некотором смысле это способ сохранить в файлах часто используемые "поиски" и пользоваться ими как обычными папками, при этом размещать их в удобных и осмысленных для пользователя местах в файловой системе.
Еще одна аналогия - ярлыки *.lnk; ярлык указывает на один файл, данный же механизм создает виртуальную папку, указывающую на несколько или произвольное, заранее неизвестное количество файлов.
Это отличается от папки с симлинками/хардлинками тем, что содержимое регенерируется автоматически каждый раз при обращении.
Возможно еще урезанная аналогия - "библиотеки" Windows.
Все найденные файлы, отображаемые в виртуальной папке, можно открывать, редактировать, копировать из этой виртуальной папки (но не в нее) и т.п.
Было бы неплохо, чтобы плагин кэшировал результаты предыдущего поиска, сохраняя их непосредственно в файле "архива" в виде простого списка путей к найденным файлам. Это ускорит работу. При этом в фоне (или по отдельной команде?) должен осуществляться повторный поиск и обновление содержимого виртуальной папки и кэша в "архиве". |
|