find——根据预设的条件递归查找对应的文件
一般格式:find [目录] [条件1] [-a|-o] [条件2]
一次性查找多个条件时用-a或-o连接多个条件
a:and——所有条件都满足,可以忽略不写
o:or——几个条件满足任意一个即可
条件:
1、-type 类型 (f文本文件、d目录、l快捷方式……)
[root@A ~]# find /boot/ -type d //查找/boot目录下类型为目录的内容
[root@A ~]# find /boot/ -type f //查找/boot目录下类型为文件的内容
[root@A ~]# find /boot/ -type l //查找/boot目录下类型为快捷方式的内容
2、-name “文档名字”
[root@A ~]# find /etc/ -name "passwd" //查找/etc下名为passwd的内容
注:支持通配符
[root@A ~]# find /etc/ -name "*.conf" //查找/etc下名字以.conf结尾的内容
3、-size +|- 文件大小(k、M、G等)
此处find 目录 -size ± 后数字不能为1否则查找不出来。如果是1G可以写成1024M,1M可以写成1024k。
[root@A ~]# find /boot/ -size +10M //查找/boot下大于10M的文件
[root@A ~]# ls -lh /boot/initramfs* //查看以上文件的大小
4、-user 用户名——按照文件的所有者
[root@A ~]# find / -user student //查找根目录下所有者是student的内容
find: ‘/proc/11620/task/11620/fd/6’: 没有那个文件或目录
find: ‘/proc/11620/task/11620/fdinfo/6’: 没有那个文件或目录
……
/var/spool/mail/student
/home/student
……
/home/student/.config/monitors.xml
/proc/目录,所占用的空间不来源于硬盘而是内存,不占用磁盘空间。
/proc是内存的访问点。可以借助/proc访问内存中正在调用的数据。 每次重启内存的所有数据会被释放,proc便会消失。
在find查找时,内存的数据调用完便会被释放,所以查找不到。
5、-group——根据帐号名称或所属组
[root@A ~]# find /home/ -group tarena //查找/home/目录下所属组为tarena的内容
6、-iname——忽略大小写根据名称查找
[root@A ~]# find /etc/ -iname "pASswd" //查找/etc目录下名称为passwd的内容
7、-maxdepth——限制目录查找的最大深度(最大层数)
find默认逐层查找至最底层,用此方式可以设置想要查找的层数。
[root@A ~]# find /etc/ -maxdepth 2 //查找/etc/目录下两层内容
8、使用find命令-exec,处理查找到的内容。
以{}代替前面命令的处理结果,逐个处理,用;结束。
将查找到的符合条件的内容复制到/opt/下
[root@A ~]# find /boot/ -size +10M -exec cp {} /opt/ \; //将/boot/目录下大于10M的文件复制到/opt/目录下
验证:
[root@A ~]# ls /opt/
9、-mtime——根据文件修改时间
所有时间都是过去的时间
-mtime +10 过去10天之前修改和创建的文档,常用+90删除系统日志文件
-mtime -10 过去10天之内修改和创建的文档
[root@A ~]# find /var/log/ -mtime +90 //查找过去90天之前修改和创建的文档
10、多条件查找示例
[root@A ~]# find /root/ -maxdepth 3 -name "nsd*" -a -type d //查找/root/目录下3层且名字以nsd开头并且类型为目录的内容