linux学习入口:Linux查询手册
前言
1.推荐一个windows好用的文件搜索软件“Everything”,目前只支持windows的NTFS分区,搜索本机资源响应很快。
2.不要在系统运行高峰期使用find命令;
3.搜索文件时,指定的文件夹越小越好;
功能:
根据条件搜索文件
语法:
find [搜索范围] [匹配条件]
常用查询示例:
1.指定目录下,根据文件名,精准查询指定文件
#etc目录下查找
find /etc -name init
#根目录下查找
find / -name init
2.指定目录下,根据文件名,模糊查询指定文件(*匹配任意字符,?匹配单个字符)
#在目录/etc中查找文件名包含init
find /etc -name *init*
#在目录/etc中查找文件名init开头的
find /etc -name init*
#在目录/etc中查找文件名init开头并有3个字符的
find /etc -name init???
3.根据文件大小筛选,使用-size
#在根目录下查找大于100MB的文件
$ find / -size +204800
说明:
- + 表示大于,- 表示小于,= 标识正好等于,一般不用;
- 上面204800的单位是数据块,数据块是linux存放数据最小的单位;
- 1数据块=512字节=0.5KB,所以100MB=102400KB=204800数据块;
4.根据所有者/所属组查找
#在home目录下查找所有者为xiaoming的文件
find /home -user xiaoming
#在home目录下查找所属组为testUserGroup的文件
find /home -group testUserGroup
5.根据时间查找
#在/etc下查找5分钟内被修改过属性的文件和目录
find /etc -cmin -5
-amin 访问时间 access
-cmin 文件属性 change,就是ls -l看到的内容
-mmin 文件内容 modify,就是使用vim修改的内容
-5表示5分钟以内,这里也是+-=,跟上面提到的一样
6.多条件组合查询
#在/etc下查找大于80MB 并且 小于100MB的文件
find /etc -size +163840 -a -size -204800
-a 两个条件同时满足
-o 两个条件满足任意一个即可
7.按类型查找(-type)
#在/etc下查找name是init开头的文件(通过type指定了是查文件)
find /etc -name init* -a -type f
-type 根据文件类型查找
f 文件 d 目录 l 软链
8.查找后执行一些操作(-exec / -ok)
区别:-exec直接执行没有要求确认,-ok在执行前会要求确认
#在/etc下查找name是init开头的文件并且显示文件的属性信息
find /etc -name init* -a -type f -exec ls -l {} \;
#在home目录下查找所有者是xiaoming的文件和文件夹,然后进行删除
find /home -user xiaoming -ok rm {} \;
9.根据i节点查找(-inum)
两个应用场景:
- 发现一个奇怪的文件名,想执行一些操作(例如删除),可先试用find根据i节点找到,再执行删除;
- 硬链接中,原文件和硬链接的i节点是一致的,可以通过find根据i节点进行查找,从而判断这个文件是不是/有没有硬链接;
#在当前目录下找到i节点是31532的文件,然后进行删除
find . -inum 31532 -exec rm {} \;