Linux下想找到一个文件却不知道放在哪里了怎么办?这时候find命令就派上用场了,与查找相关的命令还有如下这些,我简单的介绍一下。

1. which

指令会在PATH变量指定的路径中,搜索某个系统命令 的位置,并且返回第一个搜索结果

2. whereis

只能用于程序名的搜索,而且只搜索二进制文件,源代码文件,说明文件,从Linux数据库中查找,很快,但是由于数据库更新不及时,所以此命令的查找结果也受影响

3. locate

结合数据库进行查询,所以前提是数据库必须可以使用才能查到,如果你的locate无法使用,先试试执行updatedb,这个执行完,locate应该就能使用了。

关于查找的指令中,find是最常用的,也是比较强大的,提供了相当多的查询条件,所以我主要说说find。

  1. 命令格式
    find pathname -options [-print -exec -ok …]

  2. 如何使用
    1>根据文件名来查找文件,参数-name
    这里写图片描述
    命令:find /home/liuqing/class -name test.c
    find后紧跟着的是我给出的一个路径,如果你不知道想找的文件在哪个目录下,也可以直接给”/”,表示在根目录下进行查找。参数-name表示按照文件名进行查找。再给出要找的文件名是test.c结果如上图。

2>根据文件权限来查找文件 ,参数-perm
这里写图片描述

与之前一样的就不做解释了,-perm 表示按照文件的权限进行查找,后面再给出要查找的文件是775,表示查找:拥有者权限为可读可写可执行,所属组权限为可读可写可执行,其他用户权限为可读不可写可执行的文件。

3>按文件所属用户来查找文件,参数:-user
这里写图片描述
在我指定的路径下查找属于用户liuqing的文件。

4>按文件的所属组来查找文件,参数:-group
这里写图片描述
可以看出来,我code文件夹下的文件所属用户和所属组都是liuqing

5>按照文件的修改时间来查询,参数:-mtime,-atime,-ctime。
-mtime -n:表示在n天之内内容修改过的文件
-mtime +n:表示n天以前内容修改过的文件
这里写图片描述
查找到class文件夹下5天内修改过内容的文件。
-atime与-ctime参数用法和-mtime 一致,区别在于,-atime指的是查找文件最后被读取的时间,该时间用touch命令可以更改;-ctime指的是查找文件本身最后被修改的时间,该时间用chmod,chgrp,mv命令可以修改;-mtime指的是内容被修改的时间。

6>查找无有效所属组的文件,参数:-nogroup
当某一个用户组被删除后,属于该用户组的所有文件就没有了所属组,如果还想要找到这些文件,就可以使用该指令

7>查找某一类型的文件,参数:-type
我们知道,linux下一切皆文件,所以,查找时也可以根据文件的类型查找。
顺便提一下文件的类型:

  • b - 块设备⽂件。
  • d - 目录文件。
  • c - 字符设备⽂件。
  • p - 管道文件。
  • l - 符号链接⽂件。
  • f - 普通⽂件。
    这里写图片描述

8>按文件长度来查找,参数:-size
这里写图片描述
查找该路径下文件大小在50k以内的文件。

3.总结
本篇博客只介绍了find的几种基本的,常用的用法,初此之外,find还有一些其他的用法,也能和其他命令结合使用,不再一一举例。find是在磁盘上进行查找,所以,相对来说比较耗时,但是它的功能很强大,是我们比较常用的查找指令。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐