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

Здесь можно сообщить о найденных багах в Far.
Post Reply
Izver
Posts: 11
Joined: Wed 25 Jan, 2017 07:48

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

Post 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 минут)

Выводы: При использовании фильтров (где фильтр настроен на отбор папок по маске) очень долго происходит поиск с использованием маски файлов (в основном окне поиска).
Izver
Posts: 11
Joined: Wed 25 Jan, 2017 07:48

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

Post by Izver »

Работа проверялась на FAR:
3.0 build 4774 x86
3.0 build 4888 x86 (ночная бсорка)
Ночная сборка запускалась с ключами : far.exe -m -p. Результат работы аналогичный, поведение не меняется
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

просто на наборе files: 1154319, folders: 145925 ваш поиск у меня выполняется секунд 30. возможно дело в вашей структуре файлов. выложьте результат dir /s.
а вот при этом двухчасовом поиске текущая папка поиска меняется (строка над кнопками)?
Izver
Posts: 11
Joined: Wed 25 Jan, 2017 07:48

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

Post by Izver »

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

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

Post by Izver »

dir /AD /S - файл zip занимает 65 Кб
результат выполнения команды tree в zip занимает 13Кб

И ещё - поиск внутри одной из 10 папок (содержимое в каждой не сильно отличается) даёт такой странный результат
Без использования фильтра - находит нужные файлы, с использованием фильтра - не находит. Фильтр настроен, как указано выше
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Izver wrote: Нужно ли выкладывать ?
Да, ведь 3 МиБ — это не так уж много.
Izver wrote: dir /AD /S - файл zip занимает 65 Кб
Если не трудно, выложите и его тоже.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

я не понял в чём баг. если в том что долго ищет с установленными фильтрами, то ок. если в том что ничего не находит, то на фильтрах ваша задача, как мне кажется — не решается.
Izver
Posts: 11
Joined: Wed 25 Jan, 2017 07:48

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

Post by Izver »

Вот ссылка на архив - внутри структура папок
http://rgho.st/67W6xky6P

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

У меня стабильно не находит тестовый файл. Отключаю фильтр - находит, но и поиск становится конечно более длительным.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

а с чего вы взяли,что он должен находиться? вы отфильтровываете результаты поиска по условию только папки с маской *BPL* и ожидаете, что в результирующем списке найдутся файлы по маске *swift*. создайте папку с именем swift.bpl — она найдётся. каких-то неожиданных тормозов при поиске я тоже не заметил.
Izver
Posts: 11
Joined: Wed 25 Jan, 2017 07:48

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

Post by Izver »

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

Вы же не хотите сказать, что если мы выбираем крыжик "Использовать фильтр", то поле "Одна или несколько масок файлов" уже не должно рабоатать ??
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

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

А для решения Вашей задачи рекомендую Вам в первый заход без всяких фильтров найти все директории *BPL*, отправить их из результатов поиска на временную панель, там выделить, а после этого поиском в выделенном (опять же без фильтров) найти все файлы *swift*.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

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

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

P.P.S.
Хотя, припоминая прошлые обсуждения, может быть система как раз наоборот станет логически более стройной, если разделить "что" искать, и "где".
Izver
Posts: 11
Joined: Wed 25 Jan, 2017 07:48

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

Post by Izver »

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

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

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

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

Return to “Глюки и баги”