目录
随着文件增多,我们有时候记住某个文件放在哪个文件夹下了,此时搜索工具显得非常有用了,而find就是这样一个命令,可以帮助我们在指定范围内查找到文件。其基本语法如下:
find 【option】【path】【expression】
例如:希望在/usr/bin/目录下查找zip文件:
find /usr/bin/ -name zip -print
从上面的例子我们可以看出以下三点:
find命令需要一个路径作为查找的范围,所以要查找整个文件系统的话,直接指定“/”即可。
-print表示将结果输出标准输出也就是我们看到的屏幕上。
-name选项指定了文件名,可以结合通配符使用,比如-name *.c就是列出该目录下的所有c程序文件。-name的还可以换成其他参数,如下:

示例1 将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
# find . -ctime 20 -print
示例2:如果出现权限不够,find前面加个sudo就可以了

如下就看到文件在哪里了:

find命令还可以指定文件的类型,在linux中,包括目录和设备都以文件的形式表现,可以使用-type选项来定位特殊的文件类型。例如在/etc/目录中查找名叫init.d的目录:
find /etc/ -name init.d -type d -print
-type后可跟的参数如下:
| b | 块设备文件 |
| d | 目录文件 |
| c | 字符设备文件 |
| f | 普通文件 |
| p | 命名管道 |
| l | 符号链接 |
| s | socket |
尽管find命令已经展现了其强大的搜索能力,但对于大批量的搜索而言,还是显得慢一些,特别是当用户完全不记得自己的文件放在哪里的时候。这时locate命令是个不错的选择,示例:
locate *.ini或者locate 文件名
搜索结果非常快。
locate工作原理:locate并没有进入到子目录搜索,而是通过检索文件名数据库来确定文件的位置。locate命令自动建立整个文件名数据库,不需要用户插手。
如果希望立刻生成该数据库文件的最新版本,那么可以使用updatedb命令,大概耗时一分钟左右,但是我感觉我的好像一分钟都没有,需要sudo权限
