fselect: ищите файлы на жёстком диске с помощью SQL, высшая форма поиска файлов
fselect: когда поиск файлов встречается с SQL, всё становится элегантным
Краткое решение: Когда нужно найти файлы по сложным условиям вроде «PDF-файлы больше 100 МБ, изменённые после января 2024, в папке проектов на диске D», fselect позволяет сделать это одним SQL-запросом.
Everything действительно быстр для поиска файлов, но его возможности запросов ограничены. Когда нужно комбинировать несколько условий, сортировать специфическим образом или агрегировать информацию о файлах в папках, Everything пасует.
Здесь на помощь приходит fselect.
Что такое fselect?
fselect — это инструмент поиска файлов в командной строке с одной главной особенностью — он позволяет использовать SQL-синтаксис для поиска файлов.
Да, вы не ослышались. SELECT, WHERE, ORDER BY — те самые SQL-ключевые слова — для поиска на вашем жёстком диске.
Основные проблемы, которые решает fselect:
- Сложные комбинации условий → легко выразить через SQL
- Агрегация информации о файлах → прямой count/avg/sum
- Пакетные операции на основе условий → передача результатов в другие команды
- Единый кроссплатформенный опыт → тот же синтаксис на Mac/Linux/Windows
Насколько это удобно?
Сценарий 1: Сложный условный поиск
В Everything поиск «видеофайлов больше 1 ГБ» требует кликов по фильтрам. В fselect одна строка:
fselect "name, size, path FROM files WHERE type = 'video' AND size > 1g ORDER BY size DESC"
Результаты выводятся сразу, отсортированные по размеру по убыванию.
Сценарий 2: Поиск больших файлов для очистки диска
Диск заполнен и нужно найти большие файлы?
fselect "path, size FROM files WHERE size > 500m ORDER BY size DESC LIMIT 20"
Показывает 20 самых больших файлов на диске.
Сценарий 3: Подсчёт файлов
fselect "COUNT(*), LOWER(extension) FROM /путь/к/проекту WHERE type = 'image' GROUP BY LOWER(extension)"
Одной командой подсчитать, сколько изображений каждого формата в проекте.
Сценарий 4: Глубокий поиск
Хотите найти все Excel-файлы, содержащие ключевое слово «отчёт» в C:\Work\Projects, созданные после 2024 года?
fselect "name, path, created FROM C:/Work/Projects WHERE name LIKE '%отчёт%' AND extension = 'xlsx' AND created > '2024-01-01'"
Everything не может такой детализации, а fselect справляется легко.
Сравнение с аналогичными инструментами
| Аспект | fselect | Everything | Системный поиск |
|---|---|---|---|
| Синтаксис запросов | SQL | Ключевые слова | Ключевые слова |
| Сложные комбинации условий | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| Скорость поиска | Быстро (индексированный) | Очень быстро (NTFS) | Медленно |
| Статистическая агрегация | Поддерживается | Не поддерживается | Не поддерживается |
| Графический интерфейс | Нет (чистая командная строка) | Да | Да |
| Кривая обучения | Средне-высокая | Очень низкая | Низкая |
fselect для тех, кто: Уверенно пользуется командной строкой, часто ищет файлы по определённым условиям или нуждается в пакетной агрегации информации о файлах.
Отзывы пользователей
- Hacker News: «Наконец-то кто-то сделал инструмент ‘SELECT * FROM files WHERE…’, о котором я мечтал годами.»
- Программист с Zhihu @ByteFlow: «Когда я впервые использовал fselect для поиска файлов, это было как взгляд с высоты птичьего полёта.»
- Reddit r/commandline: «fselect — это то, чем каждый разработчик хотел бы видеть поиск Windows.»
Плюсы и минусы
Плюсы
- SQL-выражения чрезвычайно мощные, сложные запросы выполняются легко
- Высокая скорость поиска с оптимизацией индексов
- Кроссплатформенность (Windows/Mac/Linux)
- Можно объединять с другими инструментами командной строки
- Поддерживает агрегацию, группировку, сортировку
Минусы
- Чистая командная строка, без графического интерфейса
- Требуется знание SQL-синтаксиса
- Не индексирует автоматически по умолчанию
- В некоторых сценариях возможны проблемы с русскими именами файлов
- Не подходит обычным пользователям, которым нужно быстро найти файл
Загрузка и установка
Установка в Windows
Способ 1: Через Scoop (рекомендуется)
scoop install fselect
Способ 2: Через Chocolatey
choco install fselect
Способ 3: Скачать с GitHub
- https://github.com/jhspetersson/fselect/releases
- Скачайте бинарник для вашей системы, распакуйте и добавьте в PATH
Примечание: Установка через Scoop или Chocolatey автоматически настраивает переменные окружения, что удобнее ручной загрузки.
Быстрый старт
- После установки откройте терминал (CMD или PowerShell)
- Попробуйте простейший поиск:
fselect "name FROM C:/Users" LIMIT 10 - Фильтр по типу:
fselect "name, path FROM C:/Downloads WHERE type = 'image'" - Фильтр по размеру:
fselect "name, size FROM C:/ WHERE size > 100m" - Попробуйте агрегацию:
fselect "COUNT(*), extension FROM D:/Documents GROUP BY extension"
Шаблоны запросов
# Поиск недавно изменённых больших файлов
fselect "name, path, modified FROM C:/ WHERE size > 500m AND modified > '2025-01-01'"
# Подсчёт типов файлов и общих размеров
fselect "COUNT(*), SUM(size), extension FROM D:/Projects GROUP BY extension ORDER BY COUNT(*) DESC"
# Поиск файлов по расширению и ключевому слову
fselect "name, path FROM C:/Work WHERE extension IN ('pdf', 'docx') AND name LIKE '%отчёт%'"
# Поиск пустых файлов
fselect "name, path FROM E:/Backup WHERE size = 0"
Заключение
fselect не для всех. Обычным пользователям достаточно Everything. Но если вы разработчик, аналитик данных или продвинутый пользователь, часто ищущий файлы по сложным условиям, fselect даёт гибкость, недоступную Everything.
Когда вы привыкнете использовать fselect "SELECT * FROM files WHERE..." для обзора жёсткого диска, вся файловая система начинает ощущаться как база данных — ищите что угодно.
Краткое резюме: SQL может быть везде, и поиск файлов не исключение.