Page 1 of 1

Поиск файлов (Alt-F7) и фильтр

Posted: Thu 26 Jan, 2017 09:10
by Izver
Всем добрый день.
Мне нужно найти все файлы по маске "*Swift*", причем эти файлы должны находиться в папках с именем, удовлетворяющем маску "*BPL*"

При поиске файлов хочу ограничить поиск фильтрацией по названиям папок.

Для этого в поиске (Alt-F7) задаю параметры:
1) Скрин окна поиска:

Code: Select all

  ╔═════════════════════════════ Поиск файла ══════════════════════════════╗
  ║ Одна или несколько масок файлов:                                       ║
  ║ *Swift*                                                               ↓║
  ╟────────────────────────────────────────────────────────────────────────╢
  ║ Содержащих текст:                                                      ║
  ║                                                                       ↓║
  ║ Используя кодовую страницу:                                            ║
  ║ Автоматическое определение                                            ↓║
  ╟───────────────────────────────────┬────────────────────────────────────╢
  ║ [ ] Учитывать регистр             │ [ ] Искать в архивах               ║
  ║ [ ] Только целые слова            │ [x] Искать папки                   ║
  ║ [ ] Искать 16-ричный код          │ [x] Искать в символических ссылках ║
  ║ [ ] Не содержащих                 │ [ ] Искать в альтернативных потоках║
  ╟───────────────────────────────────┴────────────────────────────────────╢
  ║ Выберите область поиска:                                               ║
  ║ С текущей папки                 ↓   [x] Использовать фильтр            ║
  ╟────────────────────────────────────────────────────────────────────────╢
  ║      { Искать } [ Диск ] [ Фильтр ] [ Дополнительно ] [ Отмена ]       ║
  ╚════════════════════════════════════════════════════════════════════════╝
2) Скрин списка фильтров

Code: Select all

  ╔════════════════════════════ Меню фильтров ════════════════════════════╗
  ║  *                     │ .............................. ... │ *       ║
  ║+ *BPL*                 │ ..............D+.............. ... │ *BPL*   ║
  ║  *Swift*               │ ..............D-.............. ... │ *Swift* ║
  ╟────────────────────────┼────────────────────────────────────┼─────────╢
  ║  0. Папки              │ ..............D+.............. ... │         ║
  ║  1. Файлы панели       │ ..............D-.............. ... │ *.dsk   ║
  ║  2. Файлы панели       │ ..............D-.............. ... │ *.ion   ║
  ║  3. Файлы панели       │ ..............D-.............. ... │ *.log   ║
  ║  4. Файлы панели       │ ..............D-.............. ... │ *.txt   ║
  ╚══════ +,-,Пробел,I,X,BS,Shift+BS,Ins,Del,F4,F5,Ctrl+Up,Ctrl+Dn ═══════╝
3) Настройка фильтра:

Code: Select all

  ╔════════════════════════════════ Фильтр ════════════════════════════════╗
  ║ Имя фильтра: *BPL*                                                    ↓║
  ╟────────────────────────────────────────────────────────────────────────╢
  ║ [x] Маска: *BPL*                                                      ↓║
  ╟──────────────────┬─────────────────────────────────────────────────────╢
  ║ [ ] Размер:      │ [ ] Дата/Время:               [ Текущая ] [ Сброс ] ║
  ║   >=             │   записи          ↓     <=   .  .        :  :  ,    ║
  ║   <=             │   [ ] Относительная     >=   .  .        :  :  ,    ║
  ╟──────────────────┴─────────────────────────────────────────────────────╢
  ║ [x] Атрибуты                                                           ║
  ║   [?] Только для чтения              [?] Разрежённый                   ║
  ║   [?] Архивный                       [?] Временный                     ║
  ║   [?] Скрытый                        [?] Автономный                    ║
  ║   [?] Системный                      [?] Точка повторного анализа      ║
  ║   [?] Сжатый                         [?] Виртуальный                   ║
  ║   [?] Зашифрованный                  [?] Поток целостности             ║
  ║   [?] Неиндексируемый                [?] Нет данных очистки            ║
  ║   [x] Каталог                                                          ║
  ╟────────────────────────────────────────────────────────────────────────╢
  ║ [ ] Болee одной жёсткой ссылки                                         ║
  ╟────────────────────────────────────────────────────────────────────────╢
  ║                     { OK } [ Очистить ] [ Отмена ]                     ║
  ╚════════════════════════════════════════════════════════════════════════╝
Условия поиска:
Поиск по 10 папкам, в каждой по 3 тыс подпапок, и 100 тыс файлов. Всего в каждой из 10 папок внутри находится 10 папок удовлетворяющие условию *BPL*. Т.е в итоге FAR при поиске в 30 тыс. папок должен найти 100 директорий по маске *BPL*, и в них искать файлы по маске *Swift* (примерно около 200 файлов).

Получаю:
1) При заданных параметрах как на скринах, поиск выполняется очень долго (вчера я вырубил поиск после 2-х часов). Сама отмена срабатывает нормально, т.е. процесс поиска не зависает. Только нажимаешь Esc, вылезает подтверждение отмены.
2) Изменяем условия, в основном окне поиска поле "Одна или несколько масок файлов" ставим *
Остальные параметры поиска оставляем прежними.
При данных условиях поиск выполняется значительно быстрее (около 15 минут)

Выводы: При использовании фильтров (где фильтр настроен на отбор папок по маске) очень долго происходит поиск с использованием маски файлов (в основном окне поиска).

Поиск файлов (Alt-F7) и фильтр

Posted: Thu 26 Jan, 2017 09:18
by Izver
Работа проверялась на FAR:
3.0 build 4774 x86
3.0 build 4888 x86 (ночная бсорка)
Ночная сборка запускалась с ключами : far.exe -m -p. Результат работы аналогичный, поведение не меняется

Поиск файлов (Alt-F7) и фильтр

Posted: Thu 26 Jan, 2017 12:23
by zg
просто на наборе files: 1154319, folders: 145925 ваш поиск у меня выполняется секунд 30. возможно дело в вашей структуре файлов. выложьте результат dir /s.
а вот при этом двухчасовом поиске текущая папка поиска меняется (строка над кнопками)?

Поиск файлов (Alt-F7) и фильтр

Posted: Thu 26 Jan, 2017 13:05
by Izver
zg wrote:возможно дело в вашей структуре файлов. выложьте результат dir /s.
Результат выполения dir /s в текстовый файл у меня занял 25 Мб, архив zip макс. сжатие - около 3 Мб
Нужно ли выкладывать ?
zg wrote:а вот при этом двухчасовом поиске текущая папка поиска меняется (строка над кнопками)?
Да, меняется

Поиск файлов (Alt-F7) и фильтр

Posted: Thu 26 Jan, 2017 13:59
by Izver
dir /AD /S - файл zip занимает 65 Кб
результат выполнения команды tree в zip занимает 13Кб

И ещё - поиск внутри одной из 10 папок (содержимое в каждой не сильно отличается) даёт такой странный результат
Без использования фильтра - находит нужные файлы, с использованием фильтра - не находит. Фильтр настроен, как указано выше

Поиск файлов (Alt-F7) и фильтр

Posted: Thu 26 Jan, 2017 16:30
by HaRT
Izver wrote: Нужно ли выкладывать ?
Да, ведь 3 МиБ — это не так уж много.
Izver wrote: dir /AD /S - файл zip занимает 65 Кб
Если не трудно, выложите и его тоже.

Поиск файлов (Alt-F7) и фильтр

Posted: Thu 26 Jan, 2017 16:50
by zg
я не понял в чём баг. если в том что долго ищет с установленными фильтрами, то ок. если в том что ничего не находит, то на фильтрах ваша задача, как мне кажется — не решается.

Поиск файлов (Alt-F7) и фильтр

Posted: Fri 27 Jan, 2017 08:08
by Izver
Вот ссылка на архив - внутри структура папок
http://rgho.st/67W6xky6P

Для теста - распаковать, в папке /cli/AHDFRM.BPL создать файл с именем, подпадающим под маску *swift*
и попробовать поискать. Параметры поиска и фильтра указаны в начале

У меня стабильно не находит тестовый файл. Отключаю фильтр - находит, но и поиск становится конечно более длительным.

Поиск файлов (Alt-F7) и фильтр

Posted: Fri 27 Jan, 2017 13:14
by zg
а с чего вы взяли,что он должен находиться? вы отфильтровываете результаты поиска по условию только папки с маской *BPL* и ожидаете, что в результирующем списке найдутся файлы по маске *swift*. создайте папку с именем swift.bpl — она найдётся. каких-то неожиданных тормозов при поиске я тоже не заметил.

Поиск файлов (Alt-F7) и фильтр

Posted: Fri 27 Jan, 2017 15:42
by Izver
zg wrote:а с чего вы взяли,что он должен находиться? вы отфильтровываете результаты поиска по условию только папки с маской *BPL* и ожидаете, что в результирующем списке найдутся файлы по маске *swift*. создайте папку с именем swift.bpl — она найдётся. каких-то неожиданных тормозов при поиске я тоже не заметил.
Я ожидаю, что фильтр даст список папок по маске "*BPL*" (в фильтре указано - обрабатывать только папки)
а затем сработает поиск файла по маске *swift* - как задано в основном окне.

Вы же не хотите сказать, что если мы выбираем крыжик "Использовать фильтр", то поле "Одна или несколько масок файлов" уже не должно рабоатать ??

Поиск файлов (Alt-F7) и фильтр

Posted: Fri 27 Jan, 2017 16:55
by HaRT
Izver wrote: в фильтре указано - обрабатывать только папки
Нет, в фильтре указано „находить только директории, притом по маске“. Маски в основном окне — это дополнительное ограничение, используемое гораздо чаще, чем фильтры.

А для решения Вашей задачи рекомендую Вам в первый заход без всяких фильтров найти все директории *BPL*, отправить их из результатов поиска на временную панель, там выделить, а после этого поиском в выделенном (опять же без фильтров) найти все файлы *swift*.

Поиск файлов (Alt-F7) и фильтр

Posted: Tue 31 Jan, 2017 09:25
by John Doe
HaRT wrote: А для решения Вашей задачи[...]
Всё верно, сейчас чисто фильтрами не получится.
Но ведь (и даже когда-то обсуждалось) функциональность фильтров тоже можно улучшить.

Задача, поставленная автором топика, на мой взгляд достаточно типичная.

P.S.
Разумеется речь уже будет идти не о баге, а о пожелании, причём достаточно спорном (система фильтров усложнится).

P.P.S.
Хотя, припоминая прошлые обсуждения, может быть система как раз наоборот станет логически более стройной, если разделить "что" искать, и "где".

Поиск файлов (Alt-F7) и фильтр

Posted: Wed 01 Feb, 2017 09:15
by Izver
HaRT wrote:
Izver wrote: в фильтре указано - обрабатывать только папки
Нет, в фильтре указано „находить только директории, притом по маске“. Маски в основном окне — это дополнительное ограничение, используемое гораздо чаще, чем фильтры.

А для решения Вашей задачи рекомендую Вам в первый заход без всяких фильтров найти все директории *BPL*, отправить их из результатов поиска на временную панель, там выделить, а после этого поиском в выделенном (опять же без фильтров) найти все файлы *swift*.
Попробовал Ваше решение вчера, не устраивает оно меня по двум причинам:
1) одно действие превращается в два, причем оба действия (поиск) сопряжены с телодвижениями - включение/отключение фильтров, настройка масок, включение/отключение масок в основном окне
2) скорость. Простой поиск хуже по скорости против сложного примерно в два раза, это примерно 10 и 5 минут для моего случая. Мне банально проще задать простой поиск, и пойти попить чай.

Так что мне сейчас проще пользоваться простым и проверенным решением (Alt-F7 и просто задать маску файла). Пусть чуть дольше ищет.
Для меня, получается, фильтры - в данном случае не помощники :) .

И всё же, для меня непонятно, почему фильтры так медленно работают, я ожидал большего ускорения поиска - по крайней мере на порядок.