find 查找
find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
使用方法
find path -option
[-print ] [ -exec -ok command ] {} ;
######根据文件名查找 #######
find / -name filename 在根目录里面搜索文件名为filename的文件
find /home -name “.txt"
find /home -iname ".txt” # 忽略大小写
######根据文件类型查找 #######
find . -type 类型参数
f 普通文件
l 符号连接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo
####根据目录深度查找 #######
find . -maxdepth 3 -type f # 最大深度为3
find . -mindepth 2 -type f # 最小深度为2
###根据文件的权限或者大小名字类型进行查找 ######
find . -type f -size (+|-)文件大小 # +表示大于 -表示小于
b —— 块(512字节)
c —— 字节
w —— 字(2字节)
k —— 千字节
M —— 兆字节
G —— 吉字节
######### 按照时间查找 ############
-atime(+|-)n # 查找出n天以前被读取过的文件。
-mtime(+|-)n # 查找出n天以前文件内容发生改变的文件。
-ctime(+|-)n # 查找出n天以前的文件的属性发生改变的文件。
-newer file # 此选项代表查找出所有比file新的文件。
-newer file1 ! –newer file2 # 此选项代表查找比file1文件时间新
但是没有file2时间新的文件。
#注意:
#n为数字,如果前面没有+或者-号,代表的是查找出n天以前的,
但是只是一天之内的范围内发生变化的文件。
#如果n前面有+号,则代表查找距离n天之前的发生变化的文件。
如果是减号,则代表查找距离n天之内的所有发生变化的文件。
#-newer file1 ! –newer file2中的!是逻辑非运算符
######### 按照用户/权限查找 ############
-user 用户名:根据文件的属主名查找文件。
-group 组名:根据文件的属组名查找文件。
-uid n:根据文件属主的UID进行查找文件。
-gid n:根据文件属组的GID进行查找文件。
-nouser:查询文件属主在/etc/passwd文件中不存在的文件。
-nogroup:查询文件属组在/etc/group文件中不存在的文件
***** 属主; 删除用户后可以找到提前创建的文件,
但无所有者、组名称的文件,只存在ID号
-perm 777: 查询权限为777的文件
######## 查找时指定多个条件 ############
-o:逻辑或,两个条件只要满足一个即可。
-a:逻辑与,两个条件必须同时满足。
find /etc -size +2M -a -size -10M
######### 对查找结果进行处理 #############
-exec shell命令 {} ;
-ok shell命令 {} ;
其中-exec就是代表要执行shell命令,后面加的是shell指令,
再后面的“{}”表示的是要对前面查询到的结果进行查询,
最后的“\;”表示命令结束。需要注意的是“{}”和“\”之间是要有空格的。
而-ok选项与-exec的唯一区别就是它在执行shell命令的时候会事先进行询问,
-print选项是将结果显示在标准输入上
find /home -name “.txt” -ok ls -l {} ;
find /home -name “.txt” -ok rm {} ;