Как стать автором
Обновить

Мгновенный (или почти) поиск файлов в Windows

Я довольно редко пользуюсь поиском в Windows, может пару раз в день, но постепенно это стало превращаться в медленный и неповоротливый ужас. Дошло до того, что поиск нужного документа в папке с 200 файлами мог доходить до 20 секунд. Про поиск через пуск по всей системе пожалуй промолчу.

Так как на просторах рунета не нашел систематизированного подхода, то опишу свои действия, которые позволили существенно увеличить скорость поиска от 20 секунд до моментального результата.

Неудачные попытки найти решение в виде сторонних программ

После недолгого гугления, лучшими вариантами я посчитал listary и everything, обе программы существенно ускоряют поиск.

Listary

Listary позволяет искать как в конкретной папке. Нужно начать писать имя файла и сразу всплывет окно. Однако тут наблюдается проблема, что окно перекрывает значительную часть элементов, в том числе найденный.

Найденный элемент перекрыт окном
Найденный элемент перекрыт окном

Также можно искать глобально, путем двойного нажатия ctrl, инструмент похож на эпловский spotlight. Кстати, неплохо ищет стандартные приложения без каких либо calc.exe

Everything

Программа при первом запуске быстро проиндексирует все файлы, после чего поиск происходит мгновенно, даже с моим 1.4 миллионами файлов, также она отслеживает любое изменение.

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

Этой программой я пользуюсь когда нужно выполнить поиск по всем файлам без исключений и мгновенно, для этого она незаменима.

Удачная попытка решения

Вышеописанные программы делают свое дело и возможно они вам подойдут, если вы без моих заморочек. Но меня раздражает непродуманный интерфейс в Listary и обязанность делать лишние клики в Everything. Поэтому будет попытка приручить поиск в Windows по умолчанию.

В Windows за индексную базу данных отвечает файл Windows.edb. В обычной ситуации он должен ускорять поиск, но когда файл становится слишком большим, то все начинает сильно виснуть. В моем случае файл был 17гб и судя по запросов в интернете, это еще средний размер.

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

Алгоритм действий

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

Далее с помощью программы WizTree проанализировать в каких папках больше всего спрятано файлов. Также какого формата файлов больше всего на диске.

Видно, что папка Windows лидировала по количеству элементов и больше всех на диске было файлов с расширение dll.

С этой информацией заходим в "параметры индексирования" > "изменить" и снимаем галки с папок, файлы внутри которых вы готовы добавить в исключения, чтобы при поиске через пуск они не учитывались, при обычном же поиске в папке он будет медленнее.

После этого в "дополнительно" можно исключить уже определенные расширения файлов из индекса, я убрал dll и еще несколько.

После всех этих манипуляций нажимаем перестроить для создания новой базы данных.

По прошествую около 15-30 минут будут проиндексированы файлы. В моем случае я сократил с ~1000000 до 64123 тысяч индексированных элементов, а размер Windows.edb уменьшился с 17гб до 385мб. Поиск же по этим 60123 файлам стал мгновенным из любого места, в том числе и пуска.

Ради интереса поставил PowerToys Run (аналог spotlight от Microsoft) и там поиск работает даже шустрее.

Рекомендую попробовать его, если в пуске вы основном ищите файлы, либо быстро открываете программы, то он делает это быстрее и удобнее.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.