find
Table of Contents
find [查找目录] [查找规则/目标] [查找完之后执行的 action]
1. 查找规则
1、根据文件名
-name根据文件名精确查找-iname忽略大小写查找,也算是精确查找- 通配符:
*匹配任意字符?匹配任意的单个字符[]匹配括号里面的任意一个字符
2、根据文件所属用户和组
-user根据所属用户来查找-group根据所属组来查找
同时也可以用 uid 和 gid 来查找
3、条件匹配
-a必须同时满足两个条件-o满足其中的一个条件-not取反
4、文件属性
-atime-mtime-ctime:最新一次访问时间、最近一次内容修改、最近一次属性修改,单位是天-amin-mmin-cmin:同上,单位是分钟
比如:
find /data/log -atime +3030 天内没有访问过的日志文件find /data/log -atime -3030 天内访问过的日志文件
5、根据文件类型来查找文件
-type
f普通文件d目录l链接b块设备c字符设备p管道ssocket
比如: find /tmp -type s
6、根据文件大小来查找
-size
比如:
find /tmp -size 2M查找等于 2M 的文件find /tmp -size +2M查找大于 2M 的文件find /tmp -size -2M查找小于 2M 的文件
7、根据文件权限查找
-perm
2. 执行 action
-print默认执行的动作-ls查找后用 ls 显示出来-ok [command]查找后执行命令的时候询问用户是否要执行-exec [command]查找后执行命令(不询问,直接执行)
3. 最佳实践
查找 30 天未使用的日志文件并删除: find /data/log -type f -atime +30 -exec rm -rf {} \;
如何在 Linux 中查找最大 10 个文件1:
find / -type f -print0 | xargs -0 du -h | sort -rh | head -n 10 find / -type f -exec du -Sh {} + | sort -rh | head -n 10 find / -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {} find / -type f -ls | sort -k 7 -r -n | head -10 | column -t | awk '{print $7,$11}'