第十七章:第22节Linux目录与文件——文件查找(find命令)

更新于:2018-12-13 15:42:40

Linux中文件众多,有些文件我们可能不知道具体位置,这时候用find命令查找文件就方便得多。查找文件我们可以按以下几种方式去找:


1)根据文件名查找


find + 路径 + -name + 文件名


使用find命令 -name参数,在指定路径下,查找指定名称的文件名。


 find /etc -name passwd


1.png


也支持模糊查询,使用通配符

* -- 通配 0 - n个字符
?-- 通配1个字符
[] -- “[”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。


1.png


查找的文件名没有通配符,可以不加引号;有通配符需要加上引号。


只在当前目录下查找,不递归,或者限制递归层次,可使用 -maxdepth参数


1.png

1.png


-mindepth作用与-maxdepth相反。


理解:

-maxdepth n 最深查找到第n层

-mindepth n 从第n层开始查找


1.png


2)根据文件大小查找


find + 路径 + -size + 范围


使用find命令-size参数。


说说范围怎么取值:


比较符:

大于多少时:使用 + 表示
小于多少时:使用 - 表示
等于多少时 : 不需要添加符号


值的单位:(man find 可看到-size取值单位)

1.png


注意:M 是大写,k 是小写。


举例:


find /etc -size 43c

1.png

看① uuid的大小是43bytes


②查找/etc路径下的等于43bytes(字节)的文件


find /etc -size +293k

1.png


看① moduli文件的大小是300261bytes(字节),转换成kilobytes(千字节):

300261/1024=293.22

这是/etc路径下最大的文件了。


②查找/etc路径下的大于293千字节的文件,moduli文件找到了,当查找条件是大于294千字节时,找不到了。

find /etc -size +200k -size -293k


1.png


查找条件可以同时输入大于和小于。


3)根据文件类型查找


find + 路径 + -type + 类型


取值范围:

1.png


1. 普通文件类型用 f 表示而不是 -

2. d -> 目录

3. l -> 符号链接

4. b -> 块设备文件

5. c -> 字符设备文件

6. s -> socket文件,网络套接字

7. p -> 管道


查找出所有的根目录


1.png


4)根据文件所属用户或用户组查找


find + 路径 + -user + 用户名
find + 路径 + -group + 用户组


1.png


查看下是不是ubuntu用户的,可使用 -ls参数


1.png


find命令除了上面介绍的参数,还有很多可当做查询条件的参数,比如:

-perm  权限   //把符合某个权限的文件给查找出来

1.png

-mmin n   //过去n分钟修改过的文件

-mtime n //过去n天内修改过的文件


总结:


find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。


find的使用格式如下:


  $ find <指定目录> <指定条件> <指定动作>

  - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。

  - <指定条件>: 所要搜索的文件的特征。(-name、-size、-type、-user)

  - <指定动作>: 对搜索结果进行特定的处理。(-ls)


如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。