find :搜索文件或目录
语法: find [搜索范围] [匹配条件]
1 find /etc -name init 在etc目录下搜索名字为init的文件或目录,如下:
linux文件搜索命令
我们看到了相应的搜索结果,但是这只是搜索确定名字的文件或目录,如果我想搜索文件名中包含init的怎么办呢,很简单,用*号即可
linux文件搜索命令
*号代表任意字符,?代表单给字符,比如我们想搜索init后面跟着四个字符的文件或目录
linux文件搜索命令
这里可以看到结果了,我们知道linux是严格区分大小写的,那么如果我想搜索INIT的文件,需要用-iname,-iname表示不区分大小写,比如我先创建一个INIT的文件,然后搜索它
linux文件搜索命令
我们看到成功搜索到了。

2 find / -size +204800 在根目录下搜索大于100M的文件,+n代表大于,-n代表小于,=n代表等于
n的一位代表512个字节,也就是0.5k,100M就是102400k,换算成n就是204800了,如下:
linux文件搜索命令
我们看搜索到了大于100M的文件

3 find /home -user fuqiang1 搜索home目录下所有者为fuqiang1的文件或目录
linux文件搜索命令
find /home -group fuqiang1 搜索home目录下所属组为fuqiang1的文件或目录
linux文件搜索命令

4 find /etc -cmin -5 查找etc目录下5分钟之内被修改过属性的文件和目录
-amin 代表访问时间 -cmin代表文件属性 -mmin代表文件内容
linux文件搜索命令

5 -type 根据文件类型查找,f代表普通文件,d代表目录,l代表软连接文件
linux文件搜索命令

6 -inum 根据i节点查找
linux文件搜索命令

7 find /etc -size +163840 -a -size -204800
在etc下查找大于80M,小于100M的文件
-a代表两者同时满足
-o代表两个满足一个即可
linux文件搜索命令

8 find . -name fuqiang.list -exec ls -l {} \;
搜索当前目录下文件名为fuqiang.list的文件,然后直接ls -l命令列出详细信息
linux文件搜索命令
-exec/-ok 对执行结果进行操作,-exec直接操作,-ok会先询问
好了,find命令常用方法就介绍到这里,下面看第二个命令

二 locate:在文件资料库中查找文件
用法:locate inittab
linux文件搜索命令
那么这个locate跟find有什么不同呢,locate是在文件资料库中查找,也就是不是真正在磁盘上查找,这样速度会快很多,那么这个文件资料库在哪里呢,我们执行locate locate看一下
linux文件搜索命令
这里我们看到一个mlocate.db的文件,这个就是文件资料库,linux系统会定期把文件的资料同步到这里,下面看一个问题,比如我新建一个文件,然后locate这个文件,分两种情况,我先在tmp下建一个文件
linux文件搜索命令
我们发现在tmp路径下的文件查不到,这是因为这个路径下的文件不会被放到文件资料库中,那么我在其他目录下建一个文件
linux文件搜索命令
怎么依然locate不到呢,是因为新建的文件并不会立刻被同步到文件资料库中,那么我们执行updatedb,新建的文件就会同步进去了
linux文件搜索命令
我们看到搜索结果了,如果不区分大小写呢,用-i
linux文件搜索命令
好了,locate命令就介绍到这里,看下一个命令

三 which:搜索命令所在路径及别名信息
which 命令
linux文件搜索命令
我这里没有看到别名信息,不知道是不是我linux发型版的问题

四 whereis:搜索命令所在路径及帮助文档
whereis 命令
linux文件搜索命令
前面是命令所在路径,后面是帮助文档

五 grep:在文件中搜寻字符匹配的行并输出
-i不区分大小写,-v排除指定字串
grep -i if rc.local 查找rc.local文件中包含if的行,如下
linux文件搜索命令
grep -v ^# rc.locat 排除rc.local文件中以#开头的行,如下:
linux文件搜索命令