4 找寻文件

有两个工具是可以用来找寻文件,它们是 findlocatefind 用文件现在的状态来搜寻,而 locate 则用一个由系统于每日早上六时四十二分产生(这是 cron job,在其它章节有提及)的索引档来搜寻。locate 不会找得到索引档产生后才创造的文件。不过因为 locate 利用索引档来搜寻,所以速度快得很,就好像利用书本的索引而非只看内容。

为了对比这两种搜寻的方法,先假设您忘记了 X 配置文件的位置。

locate XF86Config
应该很快便得到答案,它们是一列含有 XF86Config 的文件,像这样的输出:

/etc/X11/XF86Config

/usr/X11R6/lib/X11/XF86Config

/usr/X11R6/lib/X11/XF86Config.eg

/usr/X11R6/man/man5/XF86Config.5x.gz

现在试试指令 find

find / -name XF86Config
您会听到很多磁盘活动的声音,而且时间也比较长。结果像这样:

/etc/X11/XF86Config

/usr/X11R6/lib/X11/XF86Config

find: /var/spool/cron/atjobs: Permission denied

find: /var/spool/cron/atspool: Permission denied

find: /var/lib/xdm/authdir: Permission denied

留意 find 只找到名字和 XF86Config 一模一样的文件,而非含有那个字串的文件。另外,find 是会在系统的所有目录搜寻──包括您没有阅读权限的地方,因此您得到 Permission denied 的讯息。

用法也有点不同。用 find 的时候,您需要指定从哪个目录开始搜寻,但 locate 会自动使用根目录。指定名字时您需要使用 -name 选项,而且您可以用别的条件来搜寻,例如更新日期或拥有者。利用 find 去寻找含有 XF86Config 的文件,需要用到 wildcard:

find / -name '*XF86Config*'
有如很多命令行式工具一样,find 接受 wildcard 用来作参数。

一般来说,find 的功能比较强大,而 locate 比较快,适合日常快速的搜寻。要把搜寻的各方面都解释得到将会耗用很长的时间,您不妨键入 info find,它会带您到 findlocate 的 info page,那里有更详尽资料。



John Goerzen / Ossama Othman / Debian 中文计划