find: 搜索文件
语法格式:
find [options] [查找的起始路径] [查找条件] [处理动作]
-
查找的起始路径:
指定具体的搜索目录,默认为当前目录。 -
查找条件:
指定查找的标准如,大小,文件名,类型等。默认是指定路径下的所有文件。 -
处理动作:
符合查找条件的文件做出的操作,例如cp,rm,默认为输出到标准输出。
1.根据名称查找。
- -name " "–>根据文件名称查找。
- -iname " "–>根据文件名称查找忽略文件名称大小写。
- -regex " "–>匹配路径而不是文件名。
可以使用通配符:如 find -name “fil.*”
2. 根据文件从属关系查找。
-user | 属主 |
---|---|
-group | 属组 |
-uid | 属主ID 按照用户 ID 査找所有者是指定 ID 的文件 |
-gid | 属组ID 按照用户组 ID 査找所属组是指定 ID 的文件 |
-nouser | 没有属主的文件 |
-nogroup | 没有属组的文件 |
例如 :
[root@localhost ~]#find.-user root
//在当前目录中査找所有者是 root 的文件
3.根据文件类型查找.
- -type +文件类型
[root@localhost ~]#find . -type f
//查找当前目录下的所有普通文件。
文件类型 :
f:普通文件
d:目录
b:块设备文件
l:链接文件
c:字符设备文件
p:管道文件
s:socket套接字文件
4.根据文件的大小查找。
-size [+|-]数字
[root@localhost ~]#find . -size 10
//查找当前目录下大小为10kb的文件。
[root@localhost ~]#find . -size -10
//查找当前目录下大小小于10kb的文件。
[root@localhost ~]#find . -size +10
//查找当前目录下大小大于10kb的文件。
5.根据时间戳查找。
-atime [+|-]数字 : 文件最后访问时间。
-mtime [+|-]数字 : 文件最后修改时间。
-ctime [+|-]数字: 文件最后改变时间。
- 以天为单位
例如 :
[root@localhost ~]#find . -atime 10
//查找当前目录下文件最后访问时间是10天前的那一天的文件。
//比如今天11号,找最后访问时间是1号的文件。
[root@localhost ~]#find . -atime -10
//查找当前目录下文件最后访问时间是前10天的文件。
//比如今天11号,找最后访问时间是1号到现在的文件。
[root@localhost ~]#find . -atime +10
//查找当前目录下最后访问时间是10天之前的的文件。
//比如今天11号,找最后访问时间是1号之前的文件。
- 以分钟为单位
-amin [+|-]分钟数
-mmin [+|-]分钟数
-cmin [+|-]分钟数
----->用法与按天数查找相同。
6.根据文件权限来查找.
-perm mode
-perm + mode | 精确查找 |
---|---|
-perm+ /mode | 三方权限中有一方满足即可 |
-perm+ -mode | 三方权限必须都对应满足 |
[root@localhost ~]#find . -perm 777
//查找当前目录下权限为777的文件。
[root@localhost ~]#find . -perm /777
//查找当前目录下三方权限有一方为777的文件。
[root@localhost ~]#find . -perm -421
//查找当前目录下权限要满足421的文件。权限大于421也可。
7.根据目录层级查找。
-path–> 基于目录层级
基于目录深度查找:
-maxdepth 最大深度
-mindepth 最小深度
[root@localhost ~]#find . -maxdepth 3
//查找当前目录下前三级的所有文件。
[root@localhost ~]#find . -maxdepth 3 -mindepth 3
//查找当前目录下第三级的所有文件。
8.处理动作:
默认动作,输出到标准输出 | |
---|---|
-fls | 将查找到的文件的长格式信息写入到指定文件中 |
-ok commond {} \ ; | 对执行的每个文件做commond操作,每次的操作需要用户确认 |
-exec commond {} \ ; | 对执行的每个文件做commond操作 |
说明 :{ }中得内容就是前边find命令查找出来的内容,根据需求调整处理动作所需要的命令,然后顺序。
[root@localhost ~]#find . -perm 777 -fls /etc/abc/
//查找当前目录下权限为777的文件,并放入/etc/abc/中。
[root@localhost ~]#find . -type p -ok -exec rm -f {}\;
//查找当前目录下所有管道文件。
//将查找到的文件全部删除,删除前询问是否执行。
9.逻辑运算符。
选项:
- -a:and逻辑与,两个条件都成立,find 搜索的结果才成立
- -o:or逻辑或,两个条件只要其中一个成立,find 命令就可以找到结果
- -not:not逻辑非,也就是取反的意思。
[root@localhost ~]#find . -type b -a -perm 777
//查找当前目录下,所有块设备文件同时权限为777的文件。
[root@localhost ~]#find . -type b -0 -type f
//查找当前目录下块设备文件或者普通文件。
[root@localhost ~]#find .-not -type b
//查找当前目录下除过块设备文件的所有文件。