文件搜索命令find
find 文件搜索
语法:find [搜索范围][匹配条件]
注意:匹配条件中,条件与条件之间可以用-a(两个条件同时满足时)和-o(两个条件满足任意一个)来连接
1.根据文件名来搜索
-name 区分大小写 -iname 不区分大小写
在/etc下搜索文件名为init的文件:find /etc -name init
同时我们可以使用通配符:* 来进行模糊搜索,例如:
find /etc -name *init* 搜索出文件名含有init的文件
find /etc -name init* 搜索出文件明以init为首的文件
find /etc -name *init 搜索出文件明以init结尾的文件
find /etc -name init??? 这里的?意味着具体占用的字符,该命令为搜索init后又三个字符的文件
2.根据文件大小来找 -size
find / -size +204800 在根目录(/)下找大小为大于100MB的文件
注:这里的+204800意味着大于100MB,这是怎么来的?
答:这里根据文件大小来找的文件大小的单位为数据块。那么1数据块=512B=0.5KB;100MB=102400KB;1KB=2个数据块;100MB=204800数据块
find / -size +163840 -a -size -204800
在/下查找大于80MB小于100MB的文件
-a是条件连接符
3.根据文件所有者来找
-user根据所有者 -group 根据所属组
find /home/china -user yanghong 查找/home/china目录下的所有者为yanghong的文件
find /home/china -group yanghong 查找/home/china 目录下的所有组为yanghong的文件
4.根据访问时间属性来查找
-amin 访问时间 -cmin 文件属性 -mmin文件内容
find /etc -cmin -5 在/etc下查找5分钟内被修改过文件属性的文件或目录
5.根据文件类型查找文件 -type
f文件 d目录 l软链接
例子如下:
6.对搜索结果直接执行操作
语法:find [范围] [搜索方式] [文件名] -exec/-ok 命令 {} \;
注:后面的{} \;为固定搭配必须要加上
-exec和-ok的区别在于,-exec是直接执行命令,-ok是输入代码后会对您进行一个确认后再执行操作。
例如:
find /home -name china -exec ls -ld {}\;
输入该指令后会报错,报错信息为:遗漏“-exec”的参数,原因是{}与\之间有个空格,而\和;之间没有分号
输入正确指令后得:
7.根据i节点查找(当文件名很复杂时) -inum
例如:find . -inum 8736
注:该查找方法可以在同一分区用来查找文件得硬链接文件,因为硬链接文件不能和原文件跨分区,并且i节点和原文件相同。