Гид по технологиям

Как использовать fd на Linux и macOS

• 6 min read • Инструменты • Обновлено 24 Nov 2025
fd — быстрый поиск файлов на Linux и macOS
fd — быстрый поиск файлов на Linux и macOS

Главное изображение: интерфейс терминала с примером использования fd на Linux и macOS

Что такое fd

fd — это современная и упрощённая альтернатива утилите find. Короткий и предсказуемый синтаксис делает команды короче и легче для запоминания. fd оптимизирован для поиска по шаблонам и по умолчанию игнорирует регистр (если в шаблоне нет заглавной буквы). Кратко:

  • fd — быстрый поиск файлов и директорий по имени и пути.
  • Совместим по идеям с find, но с более дружелюбным UX.
  • Поддерживает подстановки для передачи найденных файлов в другие программы.

Установка fd

fd обычно не предустановлен в системах. Установите пакет через ваш менеджер пакетов.

Ubuntu и Debian-подобные дистрибутивы

Если у вас современная Ubuntu или Debian, лучше ставить пакет из репозитория:

sudo apt-get update
sudo apt-get install fd-find

На старых системах можно скачать релиз с GitHub и установить вручную (пример для amd64):

wget https://github.com/sharkdp/fd/releases/download/v7.3.0/fd-musl_7.3.0_amd64.deb
sudo dpkg -i fd-musl_7.3.0_amd64.deb

Если нужна 32‑битная сборка или другая версия — скачайте нужный пакет на странице релизов fd.

Fedora

sudo dnf install fd-find

Arch Linux

sudo pacman -S fd

Gentoo

emerge -av fd

macOS

Через Homebrew:

brew install fd

Базовый синтаксис

fd использует простую структуру fd [опции] шаблон [директория].

  • Поиск по имени в текущей директории:
fd filename
  • Поиск в конкретной директории:
fd filename /path/to/search

fd по умолчанию рекурсивно проходит по поддиректориям.

Передача результатов в другие команды

fd поддерживает выполнение команд над найденными файлами через флаг -x и позволяет использовать специальные заполнители:

  • {} — полный путь к найденному файлу (например files/images/portrait.jpg).
  • {/} — только имя файла (basename) (portrait.jpg).
  • {//} — путь к родительской директории (files/images).
  • {.} — путь без расширения (files/images/portrait).
  • {/.} — имя файла без расширения (portrait).

Пример: распаковка всех zip-файлов в текущей директории:

fd -e zip -x unzip {}

Пример использования нескольких заполнителей и внешней команды (конвертация FLAC в Opus):

fd -e flac -x ffmpeg -i {} -c:a libopus {.}.opus

Здесь {} подставляет полный путь к найденному .flac-файлу, а {.}.opus создаёт новый файл с тем же именем и расширением .opus.

Важно: при сложных командах учитывайте экранирование и порядок аргументов. Если команда должна получить сразу много файлов, используйте -X вместо -x — -X собирает все найденные пути и передаёт их одной командe.

Полезные флаги fd

  • -e — искать файлы с указанным расширением (без точки), например -e md.
  • -E — исключить результаты, соответствующие шаблону.
  • --changed-newer-than — показать файлы изменённые позже указанной даты или в течение указанного периода (10h, 1d, 35min или точная строка "YYYY-MM-DD HH:MM:SS").
  • --changed-older-than — противоположность предыдущего, показать более старые файлы.
  • -t — фильтр по типу: -tf (файлы), -td (директории), -tx (исполняемые), -tl (символьные ссылки), -te (пустые файлы).
  • -p — искать по всему пути (pathname), а не только по имени файла.
  • -s — чувствительность к регистру (по умолчанию fd нечувствителен к регистру, пока в шаблоне нет заглавной буквы).
  • -H — показывать скрытые файлы и директории.
  • -L — следовать символическим ссылкам (аналогично find -L).
  • -x — выполнить команду для каждого найденного файла.
  • -X — передать все найденные пути как аргументы одной команды.

Частые примеры и эквиваленты find

  • Найти все файлы .log в текущей директории:
fd -e log
  • Эквивалент find (по имени, нечувствительно к регистру):
find . -iname "*.log"
  • Исключить папку vendor и искать только в путях:
fd -p -E vendor searchterm
  • Найти и удалить все файлы временных бэкапов (например *.bak):
fd -e bak -X rm -f

Когда fd не подходит (ограничения и кейсы)

  • find остаётся предпочтительным, если нужны очень сложные условия поиска (многоуровневые -exec с логикой или специфичные временные фильтры). fd фокусируется на простоте.
  • В сценариях, где скрипты полагаются на точный формат вывода find, миграция требует тестирования.
  • Для специфичных опций файловых систем (например, ACL, определённые атрибуты) find может предоставлять больше возможностей.

Миграция с find на fd — практическая методика

  1. Пройтись по критическим скриптам и отметить вызовы find.
  2. Для каждого вызова написать эквивалент fd и сравнить результаты в контрольной директории.
  3. Тестировать на производительность и корректность (учёт ссылок, скрытых файлов, регистрозависимости).
  4. Если скрипт использует сложные конструкты find (комплексные -exec или -printf), оставьте find или перепишите часть логики на небольшой скрипт, принимающий пути от fd через -X.

Мини-методология: начать с негруппового перехода — менять по одному сценарию и запускать интеграционные тесты.

Шпаргалка для повседневного использования

  • Быстрый поиск по имени: fd имя
  • Поиск по расширению: fd -e js
  • Только директории: fd -td
  • Исключить папки: fd -E node_modules
  • Передать файлы в команду: fd -x command {} или собрать все и передать разом: fd -X command
  • Чувствительность к регистру: добавьте -s

Рекомендации для разных ролей

  • Разработчик: используйте fd -p чтобы быстро находить упоминания в путях, комбинируйте с xargs или -X для массовых операций.
  • Системный администратор: используйте -L для обхода символических ссылок и --changed-newer-than для поиска недавно изменённых конфигураций.
  • Тестировщик: при миграции скриптов делайте контрольные прогоны и сохраняйте журналы вывода fd и find для сравнения.

Критерии приёмки (как проверить корректность использования fd)

  • Результаты fd соответствуют ожиданиям для выбранного шаблона и опций на контрольном наборе директорий.
  • Скрипты, заменённые с find на fd, проходят все тесты CI без регресса.
  • Производительность на реальных данных не хуже прежней (или удовлетворяет требованиям SLA).

Тесты и критерии успешного перехода

  • Функциональный тест: одинаковые наборы файлов должны быть найдены и fd, и find (для простых шаблонов).
  • Интеграционный тест: все сценарии, где применялся find, работают с fd в CI.
  • Отказоустойчивость: команды, использующие -X и -x, корректно обрабатывают имена с пробелами и спецсимволами.

Примеры реальных команд

  • Поиск всех исполняемых файлов и вывод путей:
fd -tx
  • Все скрытые файлы с расширением .env:
fd -H -e env
  • Найти файлы модифицированные за последние 24 часа:
fd --changed-newer-than 1d

Полезные советы и подводные камни

  • fd по умолчанию игнорирует файлы из .gitignore. Если нужно включить их, добавьте -H и -I (рекомендуется читать документацию для версии fd в вашей системе).
  • При передаче большого числа файлов используйте -X или xargs -0 для избежания проблем с длинной командной строки.
  • Всегда тестируйте операции удаления на тестовой директории перед запуском в проде.

Краткая сводка

fd — удобный инструмент для интерактивного и скриптового быстрого поиска файлов. Он проще в использовании, чем find, но в некоторых сложных сценариях find остаётся незаменимым. При миграции из find на fd следуйте методике постепенного перехода и проверяйте результаты в тестах.

Изображение: пример использования fd с фильтрами и передачей результатов в другую команду

Заметки:

  • Важно: всегда проверяйте команды удаления и массового изменения на не критичных данных.
  • Совместимость: у разных дистрибутивов могут быть разные имена пакетов (fd, fd-find). Проверьте менеджер пакетов вашей системы.

Конец. Попробуйте fd в своей рабочей среде — он часто ускоряет рутинные поисковые операции и делает команды короче.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро