----来源于网络视频
1、-name //按名字查找
find ./ -name '*.sh'
2、-type //按类型查找
find ./ -type f (d/p/c/b/s/l) ---普通文件(目录/管道/字符设备/块设备/socket./符号连接)
3、-size //按大小查找
默认大小单位是512B(0.5K即:一个扇区的大小)
find ./ -size 1
find ./ -size +3M -size -7M 查找大小 大于3M小于7M的文件。(M是大写)
find ./ -size +47k -size -89k (k是小写)
4、-maxdepth //确定递归的次数
find ./ -maxdepth 1 -type d //递归一次,即仅找第一层目录
find ./ -maxdepth 2 -type d //递归2次,即会找到第二层目录
5、exec //对find的结果集进行操作。
find ./ -name '*.sh' | ls -lh ----->会发现所有的文件都显示出来了
正确写法:
find ./ -name '*.sh' -exec ls -lh {} \;
exec 跟 xargs类似,{}中执行的是find ./ -name '*.sh' 的结果;
\; 是转义分号字符,
find ./ -name '*.sh' -ok rm -r {} \; 将exec换成ok, 删除操作会进行提示,我们输入y or n 来进行操作
6、 xargs //没有-
不用exec的话,可以使用xargs ,此时需要用管道
exec:是将find的结果集一次性的投入到缓冲区后执行后续的命令,缓冲区有可能充满;
xargs:是将find的结果集分批投入缓冲区。
find ./ -name '*.sh' | xargs ls -lh
xargs 会以空格、换行符或制表符来区别结果集
7、-print0 //在结果集的末尾添加null(\0)
find ./ -maxdepth 1 -type f -print0 | xargs -0 ls -lh
xargs -0 表示不以默认的空格、换行符或制表符来区别,而是换成null(\0)
防止有的文件名中带空格,会识别错误 如类似touch test\ teet1 (转义空格)
exec不会出现这种问题。
8、//按修改时间来查找文件
-atime //access 访问时间 按天
-amin 按分钟
-mtime //modify 文件内容修改时间
find ./ -name "syslong.*.gz" -mtime +5 -exec ls -lh {} \; +5表示5天前的文件
find ./ -name "syslong.*.gz" -mtime -5 -exec ls -lh {} \; -5表示5天内的文件
-mmin
-ctime // 文件的属性修改时间
-cmin
linux日志文件存放在 /var/log/syslog目录下: