Repolode
tavianator

tavianator/bfs

Вариант UNIX-команды find с обходом в ширину: сначала выводит файлы из неглубоких каталогов и совместим с POSIX-, BSD- и GNU-версиями find.

Звёзды
1,282
Форки
44
Открытые issues
15
Последний коммит
9 дней назад

Что это?

bfs — вариант UNIX-команды find, который обходит дерево каталогов в ширину, а не в глубину. Он выводит файлы от самых неглубоких к самым глубоким, поэтому не приходится ждать, пока он пройдёт не связанное с поиском глубокое поддерево, прежде чем доберётся до нужного файла.

bfs стремится к совместимости со многими версиями find, включая POSIX, GNU, FreeBSD, OpenBSD, NetBSD и macOS. Кроме того, он упрощает частые задачи: аргументы можно указывать в любом порядке, при опечатках в параметрах предлагаются исправления, а статический анализатор предупреждает о выражениях, результаты которых игнорируются. Также добавлены оператор -exclude, пропускающий целые поддеревья, и -nohidden для пропуска скрытых файлов.

bfs написан на C, доступен во многих пакетных менеджерах Linux, macOS и BSD и собирается с помощью configure и make. Дополнительные возможности можно включить, установив необязательные системные библиотеки, такие как ACL, attr, libcap, liburing и oniguruma.

Ключевые возможности

  • 01Обходит дерево в ширину, поэтому файлы в неглубоких каталогах выводятся раньше, чем содержимое глубоких поддеревьев.
  • 02Позволяет указывать параметры и выражения в произвольном порядке, в отличие от строгого синтаксиса find.
  • 03Предлагает исправления для аргументов с опечатками.
  • 04Предупреждает о выражениях, результаты которых игнорируются.
  • 05Позволяет пропускать целые поддеревья с помощью -exclude, а скрытые файлы — с помощью -nohidden.

Сценарии использования

  • Поиск файла в большом дереве проекта, если неизвестно, насколько глубоко он находится.
  • Замена find в скриптах с сохранением привычных предикатов и параметров.
  • Поиск по дереву каталогов с пропуском .git и других ненужных папок с помощью -exclude.

Быстрый старт

  1. 1

    Установите через Homebrew на macOS

    brew install bfs
  2. 2

    Или установите из пакетного менеджера вашего дистрибутива Linux (например, Arch Linux)

    pacman -S bfs
  3. 3

    Или соберите из исходного кода: скачайте релиз или клонируйте репозиторий, затем запустите configure и make

    ./configure && make

Что важно знать

  • Для сборки из исходного кода нужны компилятор C, GNU make и Bash; для использования всех функций могут также потребоваться дополнительные системные библиотеки.

Темы

Частые вопросы

Что такое bfs?
Вариант UNIX-команды find с обходом в ширину: сначала выводит файлы из неглубоких каталогов и совместим с POSIX-, BSD- и GNU-версиями find. bfs — вариант UNIX-команды find, который обходит дерево каталогов в ширину, а не в глубину. Он выводит файлы от самых неглубоких к самым глубоким, поэтому не приходится ждать, пока он пройдёт не связанное с поиском глубокое поддерево, прежде чем доберётся до нужного файла.
bfs можно использовать бесплатно? Какая у него лицензия?
bfs распространяется с открытым исходным кодом под лицензией 0BSD. Перед использованием в коммерческих продуктах проверьте условия лицензии.
bfs всё ещё поддерживается?
Активно поддерживается. Последний коммит в bfs — 13 окт. 2026 г..
Для чего можно использовать bfs?
Поиск файла в большом дереве проекта, если неизвестно, насколько глубоко он находится. Замена find в скриптах с сохранением привычных предикатов и параметров. Поиск по дереву каталогов с пропуском .git и других ненужных папок с помощью -exclude.
Как установить bfs?
Установите через Homebrew на macOS: brew install bfs Или установите из пакетного менеджера вашего дистрибутива Linux (например, Arch Linux): pacman -S bfs Или соберите из исходного кода: скачайте релиз или клонируйте репозиторий, затем запустите configure и make: ./configure && make
Где скачать bfs?
Исходный код и инструкции по установке — на GitHub: https://github.com/tavianator/bfs

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты