Repolode
tavianator

tavianator/bfs

一个广度优先的 UNIX find 命令替代品,先列出浅层文件,兼容 POSIX 与主流 find 用法。

Star
1,282
Fork
44
未关闭 Issue
15
最近提交
9天前

这是什么?

bfs 是 UNIX find 命令的一个变体,它按广度优先而非深度优先遍历目录树。它从最浅层的文件开始逐层列出,因此不必等它把无关的深层子树全部遍历完,就能找到目标文件。

它力求与多种 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,同时保留熟悉的谓词和选项。
  • 用 -exclude 跳过 .git 等无关目录后再搜索。

快速上手

  1. 1

    在 macOS 上通过 Homebrew 安装

    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 与主流 find 用法。 bfs 是 UNIX find 命令的一个变体,它按广度优先而非深度优先遍历目录树。它从最浅层的文件开始逐层列出,因此不必等它把无关的深层子树全部遍历完,就能找到目标文件。
bfs 可以免费使用吗?用的什么许可证?
bfs 以 0BSD 许可证开源。用于商业产品前,请先确认许可证条款。
bfs 还在维护吗?
活跃维护中。bfs 最近一次提交是在 2026年10月13日。
bfs 适合用来做什么?
在大型项目目录中查找文件,且不确定它位于多深的层级。 在脚本中替换 find,同时保留熟悉的谓词和选项。 用 -exclude 跳过 .git 等无关目录后再搜索。
bfs 怎么安装和运行?
在 macOS 上通过 Homebrew 安装: brew install bfs 或通过 Linux 发行版的包管理器安装(例如 Arch Linux): pacman -S bfs 或从源码构建:下载发行版或克隆仓库,然后运行 configure 和 make: ./configure && make
在哪里获取 bfs?
源代码和安装说明在 GitHub 上:https://github.com/tavianator/bfs

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目