6.60. Findutils-4.6.0

Findutils 软件包包含用于查找文件的程序。 这些程序能够递归地搜索目录树,以及创建、维护和搜索数据库 (一般比递归搜索快,但在数据库最近没有更新时不可靠)。

估计编译时间: 0.7 SBU
需要硬盘空间: 51 MB

6.60.1. 安装 Findutils

首先,禁用一个在某些机器上会无限循环的测试:

sed -i 's/test-lock..EXEEXT.//' tests/Makefile.in

然后,进行 glibc-2.28 要求的一些修补:

sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.c
sed -i '/unistd/a #include <sys/sysmacros.h>' gl/lib/mountlist.c
echo "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h

准备安装 Findutils:

./configure --prefix=/usr --localstatedir=/var/lib/locate

配置选项的含义:

--localstatedir

该选项将 locate 数据库的位置改为 /var/lib/locate, 以与 FHS 兼容。

编译该软件包:

make

运行以下命令以测试编译结果:

make check

安装该软件包:

make install

LFS-Bootscripts 软件包中的某些脚本依赖于 find。由于 /usr 在引导早期阶段可能不可用,需要将这个程序移动到根分区。 updatedb 脚本也需要进行修改, 以修正一个显式指定的路径:

mv -v /usr/bin/find /bin
sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb

6.60.2. Findutils 的内容

安装的程序: code, find, locate, oldfind, updatedb, 以及 xargs

简要描述

code

曾经被用于创建 locate 数据库;是 frcode 的前身

find

在给定目录树中搜索满足给定条件的文件

locate

在文件名数据库中进行搜索, 报告包含特定字符串或匹配特定模式的文件名

oldfind

旧版的 find ,使用不同的算法

updatedb

更新 locate 数据库; 它扫描整个文件系统(包括当前挂载的其他文件系统, 除非被告知不这样做),并把找到的所有文件名加入数据库

xargs

可以将给定命令作用于一个列表中的所有文件