fd: человеческий интерфейс для поиска файлов
find - инструмент удобный, но его синтаксис остается одной из главных проблем в повседневной работе. Каждый раз, когда требуется найти что-то сложнее базового find . -name "*.py", приходится обращаться к документации. Это когнитивная нагрузка, которая отвлекает от решения реальной задачи.
fd - альтернативная реализация, сохраняющая всю функциональность find, но с синтаксисом, который не требует постоянного обращения к man-страницам.
Ключевые отличия от find
- Интуитивный синтаксис - шаблон поиска передается как первый аргумент, без опций -name или -path. fd .py вместо find . -name "*.py".
- Уважение .gitignore по умолчанию - fd не ищет в node_modules, .venv и других игнорируемых директориях, если явно не указано иное.
- Цветной вывод - файлы и директории подсвечиваются разными цветами, символические ссылки имеют отдельное оформление.
- Регулярные выражения по умолчанию - шаблон интерпретируется как регулярное выражение, что делает поиск более гибким без дополнительных флагов.
- Параллельная обработка - поиск выполняется в нескольких потоках, что дает прирост производительности на больших файловых системах.
Практические сценарии:
➤ Поиск файлов по имени
Базовые операции интуитивно понятны: расширение файла указывается без маски, регистронезависимый поиск - через -i, множественные расширения - через несколько флагов -e. Цветной вывод сразу показывает тип каждого найденного элемента.
➤ Поиск с исключениями
Исключение директорий и файлов работает через --exclude. Поскольку .gitignore учитывается автоматически, дополнительных действий для исключения стандартных артефактов не требуется. Флаг --hidden включает поиск в скрытых директориях.
➤ Выполнение команд над найденным
Встроенный механизм -x позволяет выполнить произвольную команду для каждого найденного файла, подставляя путь через {}. Это избавляет от необходимости использовать xargs и заниматься экранированием имен с пробелами и спецсимволами.
Экосистемная интеграция
fd отлично интегрируется с другими современными инструментами командной строки. Пайплайн fd | fzf создает интерактивный интерфейс для выбора файлов из всего проекта. В сочетании с ripgrep (rg) формируется полный набор инструментов для навигации по кодовой базе.
👉🏻 Я в Telegram - t.me/helcode
👉🏻 Я в VK - vk.com/helcode
👉🏻 Я на Boosty - boosty.to/helcode
👉🏻 Я в VK - vk.com/helcode
👉🏻 Я на Boosty - boosty.to/helcode